Top / PukiWiki / URLをディレクトリ形式にする

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をディレクトリ構成にする
  • リンクをディレクトリ構成にする

ってのは、対応のやり方がそれぞれ別ですよね。ディレクトリ構成でリクエストされたURLをWikiがほしがってるパラメタ形式に変換する、つまりWikiをディレクトリ構成で受けられるようにする対応*3は、mod_rewriteでやるのがよいですが、Wikiに張られるリンクをパラメタ形式からディレクトリ形式に変換する*4ってのは今回はwiki自体にパッチを当てました。

これ、一般的にはどうするんですかね?パラメタ形式でやってるどのサイトも、ディレクトリ形式にするためにはプログラム修正しろってのはとても大変なような、、、、。。

関連リンク


この記事は

選択肢 投票
おもしろかった 6  
そうでもない 0  
  • J2EEではFilterによってレスポンスを改ざんするってのがあるみたいです。 -- きの? 2007-11-15 (木) 07:34:19
  • 非J2EE系ではmod_ext_filterでレスポンスを改ざんするってのがあるみたいです -- きの? 2007-11-15 (木) 07:36:11
  • EncDHyhdJRvgOAbAGJq -- faeqlevak? 2011-11-20 (日) 11:45:52

Top / PukiWiki / URLをディレクトリ形式にする

現在のアクセス:10728


*1 httpd.confの上の方をアンコメントですね
*2 ルートディレクトリ全体はもちろんバックアップを取ってから
*3 外から内へのリンクといいますか
*4 内から外へのリンクですね

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-05-06 (金) 23:23:23 (721d)