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