PukiWiki (プキウィキ) でベーシック認証、全体にパスワードがかかっている状態で更に1部のページにパスワードをかける

PukiWiki

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

スポンサーリンク
スポンサーリンク

PukiWiki (プキウィキ) で1部のページのみにパスワードをかける

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

WS000007

PukiWiki に入るのにユーザーAのユーザー名とパスワードで入ります。

これで、PukiWiki に入ることが出来るのですが、特定の1ページは、更にユーザーBのユーザー名とパスワードがないと入ることが出来ません。

エックスサーバー(XSERVER)

の場合、Pukiwikiの自動インストール機能があるのですが、さらに、ドメインごとにアクセス制限を設定できます。

これはいわゆるベーシック認証になっています。

エックスサーバー

ここで、ユーザー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でサイトを作るときに役に立つ一冊となっています。

おすすめのレンタルサーバーはエックスサーバー

おすすめのレンタルサーバーはエックスサーバーです。

↓エックスサーバーの公式サイトはコチラ

エックスサーバー