これもともとやるつもりじゃなかったんだけど、all about blosxomのpermalink をボケーっと見てたら、あー ? 付きってなんてダサいんだ!とか思い始めてやっちゃった次第……

っていっても力技な改造なのでお勧めできない。むしろ力技な方法しかない。つまり、mod_rewrite のやつ書いたら、あとはガッツ手作業 (謎) で ? + ページ名 なリンクを生成しているところを置き換えていく。

とはいえいくつかハマったのでそのへん一応書いておこう。いやしかしなんで俺は最初から書こうと思わなかったんだ。

まず mod_rewrite の設定を .htaccess に書く。ドメインのトップに設置しているので、その辺きめうちです。これはスクリプト書き換えるときもそうですけど。ていうかあー、これ pukiwiki 1.4.3 の話なので、最近のは普通にできるのかもしれません。最近のやつはスキンファイルが理解しがたいのでいぢる気が起きませんけど。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?$1 [L,QSA]

func.php でページリストを書き出す関数 page_list があるのだけど、"$script?cmd=$cmd&page=$r_page" とかなってて一見書き換えポイントに見えないので注意。ちなみにそのまま書き換えるともちろんよくないので以下のように

        if ($cmd == "read") {
$str = "   <li><a href=\"/$r_page\">$s_page</a>$passage";
} else {
$str = "   <li><a href=\"$script?cmd=$cmd&amp;page=$r_page\">$s_page</a>$passage";
}

んでもって、このままだと / を含んだページ名のページを見れなくなる (詳細不明) なので、rawurlencode($page) とかを、str_replace("%2F", "/", rawurlencode($page)) にすべて置き換えます。めんどいので gresreg やった。$page$post['page'] になってるところがあるのでソレも忘れずに。

で、終わりなんだけど、これをやる人にとって、この情報は大して役に立たない気がするよ。普通にやると普通に気付くことしか書いてないから!

  1. トップ
  2. net
  3. pukiwiki の URI をクールに
▲ この日のエントリ