PukiWiki (プキウィキ) で全体にパスワードがかかっている状態で、更に1部のページにパスワードをかけるのに、ちょっとハマったのでメモします。
PukiWiki (プキウィキ) で1部のページのみにパスワードをかける
やりたかったことは、およそ以下のような状態です。
PukiWiki に入るのにユーザーAのユーザー名とパスワードで入ります。
これで、PukiWiki に入ることが出来るのですが、特定の1ページは、更にユーザーBのユーザー名とパスワードがないと入ることが出来ません。
の場合、Pukiwikiの自動インストール機能があるのですが、さらに、ドメインごとにアクセス制限を設定できます。
これはいわゆるベーシック認証になっています。
ここで、ユーザーIDとパスワードを設定することにより、全体のページにベーシック認証をかけることが出来ます。
内部的には、
.htpasswd
にユーザー名と暗号化されたパスワードが書き込まれます。
PukiWikiで個別ページにパスワードをかける
更に、個別のページにパスワードをかけるには
pukiwiki.ini.php
を次のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// User definition $auth_users = array( // Username => password 'godzilla' => 'gamera', // Cleartext 'foo' => 'foo_passwd', // Cleartext 'bar' => '{x-php-md5}f53ae779077e987718cc285b14dfbe86', // PHP md5() 'bar_passwd' 'hoge' => '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx', // LDAP SMD5 'hoge_passwd' ); ///////////////////////////////////////////////// // Authentication method $auth_method_type = 'pagename'; // By Page name //$auth_method_type = 'contents'; // By Page contents ///////////////////////////////////////////////// // Read auth (0:Disable, 1:Enable) $read_auth = 1; $read_auth_pages = array( // Regex Username '#非公開ぺージ#' => 'godzilla', '#HogeHoge#' => 'hoge', '#(NETABARE|NetaBare)#' => 'foo,bar,hoge', ); ///////////////////////////////////////////////// // Edit auth (0:Disable, 1:Enable) $edit_auth = 1; $edit_auth_pages = array( // Regex Username '#非公開ページ#' => 'godzilla', '#BarDiary#' => 'bar', '#HogeHoge#' => 'hoge', '#(NETABARE|NetaBare)#' => 'foo,bar,hoge', ); ///////////////////////////////////////////////// // Search auth // 0: Disabled (Search read-prohibited page contents) // 1: Enabled (Search only permitted pages for the user) $search_auth = 1; |
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でサイトを作るときに役に立つ一冊となっています。
おすすめのレンタルサーバーはエックスサーバー
おすすめのレンタルサーバーはエックスサーバーです。
↓エックスサーバーの公式サイトはコチラ
コメント