mod_rewriteとpukiwikiのパッチを使ってURLをディレクトリ形式にする †通常のPukiwikiのURLは /pukiwiki/index.php?[親ページ名1/親ページ名2/ページ名] という形式になってます。ページ名の区切りの「/」はURLEncodingされて「%2f」になるため、index.phpの後ろに長ったらしいパラメタがついた形式となります。このURL形式を /pukiwiki/[親ページ名1/親ページ名2/ページ名] というようにディレクトリ形式に変更する方法を調べました。もとのパラメタ形式だと、Awstatsなどのアクセス解析ツールから見ると全ページがindex.phpに見えちゃうわけですが、ディレクトリ形式にすることによって各ページを別ページと解釈してくれて、正しいアクセス分析ができるようになります。さらにはGoogleなどの検索エンジンも、パラメタ形式より静的htmlに見えるディレクトリ形式の方がクロールしてくれる、という効果もあるみたいです。 たとえばこのページは 変更前: http://www.masatom.in/pukiwiki/index.php?PukiWiki%2fURL%a4%f2%a5%c7%a5%a3%a5%ec%a5%af%a5%c8%a5%ea%b7%c1%bc%b0%a4%cb%a4%b9%a4%eb 変更後: http://www.masatom.in/pukiwiki/PukiWiki/URL%A4%F2%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8%A5%EA%B7%C1%BC%B0%A4%CB%A4%B9%A4%EB/ となります。ヒトには些細な違いですが、機械には大きな違いがあるわけですね。 やってみた †のサイトを参考にさせていただきました。このサイトにはディレクトリ形式でもアクセスできるようにするためのmod_rewriteの設定方法と、Pukiwiki自体が生成するリンクをディレクトリ形式するためのパッチを提供してくれています。ギークですね。 mod_rewriteを使って、ディレクトリ形式でもアクセスできるようにする †mod_rewriteを使用可能*1にしてhttpd.confに以下を記述します。 <Directory "/html/pukiwiki"> <-Pukiwikiのディレクトリをサーバ上のフルパスで指定 Options FollowSymLinks RewriteEngine on RewriteOptions MaxRedirects=1 RewriteBase /pukiwiki/ RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)/$ index.php?$1 [L] </Directory> Pukiwikiが生成するリンクをディレクトリ形式にするためのパッチをPukiwikiに当てる †Pukiwikiのルートディレクトリに移動して、*2 [root@www pukiwiki]# cp -pfr ~/camo_dir_147.diff ./ [root@www pukiwiki]# patch -p1 < camo_dir_147.diff [root@www pukiwiki]# rm -fr camo_dir_147.diff 以上でパッチ当ては完了です。 雑感 †上のように、
ってのは、対応のやり方がそれぞれ別ですよね。ディレクトリ構成でリクエストされたURLをWikiがほしがってるパラメタ形式に変換する、つまりWikiをディレクトリ構成で受けられるようにする対応*3は、mod_rewriteでやるのがよいですが、Wikiに張られるリンクをパラメタ形式からディレクトリ形式に変換する*4ってのは今回はwiki自体にパッチを当てました。 これ、一般的にはどうするんですかね?パラメタ形式でやってるどのサイトも、ディレクトリ形式にするためにはプログラム修正しろってのはとても大変なような、、、、。。 関連リンク †この記事は
現在のアクセス:11065 |