PukiWikiで全体にパスワードがかかっている状態で更に1部のページにパスワードをかける

PukiWikiで全体にパスワードがかかっている状態で更に1部のページにパスワードをかけるのに、ちょっとハマったのでメモします。

スポンサーリンク

PukiWikiで1部のページのみにパスワードをかける

やりたかったことは、およそ以下のような状態です。

WS000007

エックスサーバー(XSERVER) の場合、Pukiwikiの自動インストール機能があるのですが、さらに、ドメインごとにアクセス制限を設定できます。
これはいわゆるベーシック認証になっています。

image

ここで、ユーザーIDとパスワードを設定することにより、全体のページにベーシック認証をかけることが出来ます。
内部的には、.htpasswdにユーザー名と暗号化されたパスワードが書き込まれます。

PukiWikiで個別ページにパスワードをかける

個別のページにパスワードをかけるにはpukiwiki.ini.phpを次のように編集します。

User definitionの所でユーザーをユーザー名 => パスワードのよう追加します。

godilla => gamera

としました。

「非公開ページ」という名前のページに読み込み制限を追加します。

$read_auth = 1;
‘#非公開ページ#’ => ‘godilla’,

「非公開ページ」という名前のページに編集制限を追加します。

$edit_auth = 1;
‘#非公開ページ#’ => ‘godilla’,

つぎに検索制限を追加します。

$search_auth=1;

これで「非公開ページ」のみ更にパスワードがかかるはず。

ところが「非公開ページ」を開こうとすると確かにユーザー名とパスワードが聞かれるのですが、設定したユーザー(ユーザー名:godilla、パスワード:gamera)では認証されません。

Apacheのログを見てみました。
Accessログはこんな感じです。

“GET /index.php?xxxxx HTTP/1.1” 401 8676 “http://(ドメイン名)/index.php?FrontPage” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36”

HTTPのステータスコード 401 Unauthorized(認証が必要である)が表示されています。これはちゃんと認証が要求されていることを意味しています。

一方、Errorログはこんな感じでした。

user godzilla not found: /index.php, referer:

ユーザーgodzillaが存在しません。。。。?

ここでしばらく悩んだのですが、どうやら、pukiwiki.ini.phpのUser definitionで定義したユーザーを認識していないようです。

サイト全体に対してベーシック認証をかけているせいなんでしょうか?

とりあえず、エックスサーバーのコントロールパネルからアクセス設定制限でユーザーgodillaを追加することにより解決しました。

最後まで読んでいただきありがとうござました。
この記事が気に入っていただけたらシェアしてくれると嬉しいです。

[関連書籍]

自由に、いつでも、みんなが、好きなように情報をまとめよう!

日本製Wikiクローンのひとつ「PukiWiki」は、情報をみんなでまとめるWebサイトを作るツールとして、ユーザーがどんどんひろがっています。本書は、開発に関わった執筆者らによるほぼ公式に近い参考書です。実用性を重視し、実際にPukiWikiでサイトを作るときに役に立つ一冊となっています。

スポンサーリンク
スポンサーリンク
Translate »