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 しか修正していない。まだ使っていないもので修正が必要なものがあるだろうが、“そのときはそのとき”という方針で、未修正。
おわり。