lib/init.phpにて、cmdもpluginも指定されていない場合は、QUERY_STRINGをページ名かInterWikiNameであるとみなしているため、アンカー指定(#...)やGETの引数指定(&...)までがページ名として$vars['page']に入ってしまい、plugin/read.inc.phpで「有効なWikiNameではありません」とエラー出力してしまう。
lib/init.phpのl.354
- $get['page'] = $post['page'] = $vars['page'] = $arg; + $get['page'] = $post['page'] = $vars['page'] = preg_replace("/(.*?)[#&].*/", "$1", $arg);
として、#もしくは&以降は削ってしまってはどうでしょうか。
pukiwiki:自作プラグイン/areaedit.inc.phpのv0.18が動かないのがきっかけで調査しました。記入時に#areaedit数値へとぶ機能が追加されると、「有効なWikiNameではありません」と表示されるようになってしまいました。このプラグインの動作確認は1.4.3だったようなので、それ以降のバージョンでのデグレードでしょうか?
// cmdもpluginも指定されていない場合は、QUERY_STRINGをページ名かInterWikiNameであるとみなす if (! isset($vars['cmd']) && ! isset($vars['plugin'])) { $get['cmd'] = $post['cmd'] = $vars['cmd'] = 'read'; if ($vars['page'] == '') { if ($arg == '') $arg = $defaultpage; $arg = rawurldecode($arg); $arg = strip_bracket($arg); $arg = input_filter($arg); $get['page'] = $post['page'] = $vars['page'] = $arg; } }&page=pagename を使っていない時は何にも意味が無いと思いますけど・・・。 -- 2007-11-12 (月) 23:48:59