PukiWikiのURLの整形(その4)
id:otn:20060604 の続き。
最後に、各ページURLの表示を変更する。EUC-JP のページ名は、rawurlencode() によって URL 中のページ名に変換される。そこで、lib/make_link.phpの先頭で、
function myurlencode($uri) { return str_replace('%2F','/',rawurlencode($uri)).'/'; }
と、%2F を / に戻してさらに最後に / を付けるように変更する。これを使い、
$script . '?' . rawurlencode($page)
のようになっている部分を、
$script . '/' . myurlencode($page)
のように変更するのだが、これだと、/CMD/?ページ名 が、/CMD//ページ名 になってしまう。そこで、
rtrim($script,'/') . '/' . myurlencode($page)
のように、スクリプト文字列の最後の / を取る必要がある。
こういった変更を、lib/make_link.php の他、lib/html.php 、lib/func.php や plugin の中も変更する。
ただし、refer= の後や、page= の後は、rawurlencode() のままである。
lib/func.php の中の function page_list() は、
// Shrink URI for read if ($cmd == 'read') { ! $href = rtrim($script,'/') . '/'; } else { $href = $script . '?cmd=' . $cmd . '&page='; } foreach($pages as $file=>$page) { ! if ($cmd == 'read') { ! $r_page = myurlencode($page); ! } else { ! $r_page = rawurlencode($page); ! } $s_page = htmlspecialchars($page, ENT_QUOTES); $passage = get_pg_passage($page);
のようにするといいだろう。
plungin は、navi ls2 recent rss tb しか修正していない。まだ使っていないもので修正が必要なものがあるだろうが、“そのときはそのとき”という方針で、未修正。
おわり。