はじめに †
PukiWikiで公開したくないページへのアクセスを制限する方法です.
このWikiでは静的コンテンツに偽装しているので,private/に非公開ページを置くことにして,名前にprivateを含むページを非公開としました.
PukiWiki 1.4.7で確認しました.
アクセス可能ユーザーの登録 †
まずはじめに,パスワードを暗号化します. Webブラウザーでpukiwikiのindex.php?md5=passにアクセスします.
画面が表示されたら,Phraseのところにパスワードを入力し,Computeボタンを押してパスワードを暗号化します.
pukiwiki.ini.phpのUser definitionのところを次のように変更します.
///////////////////////////////////////////////// // User definition $auth_users = array( // Username => password 'wiki' => '{SSHA}yUcWHhrXz0fQYQXu1m06sPPi7gNRTzZPMWIxLw==' );
変更したのは,下から2行目だけです. この例では,ユーザー名がwiki,パスワードはpassを暗号化したものになっています.
制限対象ページの設定 †
次に,アクセス制限する対象を設定します.
pukiwiki.ini.phpのAughentication methodとRead authのところ(上で編集したUser definitionの直後)を次のように変更します.
///////////////////////////////////////////////// // 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 '#private#' => 'wiki', );
変更したのは,変数read_authの値と下から2行目だけです. この例では,privateという文字列を名前に含むページに対してwikiだけにアクセスを許可しています.
更新履歴に載せないようにする †
最後に,どのようなページを作成したのか,また,編集したのか分からないようにするため,更新履歴(最新のxx件)に載せないようにします.
pukiwiki.ini.phpのIgnore listのところを次のように変更します.
///////////////////////////////////////////////// // Ignore list // Regex of ignore pages $non_list = '^\:|#private#';
変更したのは最後の行だけです. この例では,:で始まるページ名とprivateを含むページ名を無視するようにしています.
もしすでに更新履歴(最新のxx件)に載ってしまっている場合は,plugin/recent.datを直接編集して該当する行を削除します.
参考情報 †
- Pukiwikiで一部のページにのみパスワード認証をかける方法 | 研究な日々