#author("2022-05-06T14:23:21+00:00","","") #author("2022-05-06T14:23:23+00:00","","") // 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents ** mod_rewriteとpukiwikiのパッチを使ってURLをディレクトリ形式にする [#zbd42368] 通常の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/ となります。ヒトには些細な違いですが、機械には大きな違いがあるわけですね。 **やってみた [#v2802c6f] -[[PukiWiki/改造/静的コンテンツに偽装/ページ - cubic9.com>http://cubic9.com/PukiWiki/%B2%FE%C2%A4/%C0%C5%C5%AA%A5%B3%A5%F3%A5%C6%A5%F3%A5%C4%A4%CB%B5%B6%C1%F5/%A5%DA%A1%BC%A5%B8/]] のサイトを参考にさせていただきました。このサイトにはディレクトリ形式でもアクセスできるようにするためのmod_rewriteの設定方法と、Pukiwiki自体が生成するリンクをディレクトリ形式するためのパッチを提供してくれています。ギークですね。 ***mod_rewriteを使って、ディレクトリ形式でもアクセスできるようにする [#nb3295b5] mod_rewriteを使用可能((httpd.confの上の方をアンコメントですね))にして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に当てる [#b9575b03] Pukiwikiのルートディレクトリに移動して、((ルートディレクトリ全体はもちろんバックアップを取ってから)) [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 以上でパッチ当ては完了です。 ***雑感 [#u97364ee] 上のように、 -待ち受けのURLをディレクトリ構成にする -リンクをディレクトリ構成にする ってのは、対応のやり方がそれぞれ別ですよね。ディレクトリ構成でリクエストされたURLをWikiがほしがってるパラメタ形式に変換する、つまりWikiをディレクトリ構成で受けられるようにする対応((外から内へのリンクといいますか))は、mod_rewriteでやるのがよいですが、Wikiに張られるリンクをパラメタ形式からディレクトリ形式に変換する((内から外へのリンクですね))ってのは今回はwiki自体にパッチを当てました。 これ、一般的にはどうするんですかね?パラメタ形式でやってるどのサイトも、ディレクトリ形式にするためにはプログラム修正しろってのはとても大変なような、、、、。。 **関連リンク [#d0b063dc] -[[PukiWiki/改造/静的コンテンツに偽装/ページ - cubic9.com>http://cubic9.com/PukiWiki/%B2%FE%C2%A4/%C0%C5%C5%AA%A5%B3%A5%F3%A5%C6%A5%F3%A5%C4%A4%CB%B5%B6%C1%F5/%A5%DA%A1%BC%A5%B8/]] -[[キーワードアーカイブへのリンクURLを簡潔にする - mod_rewrite:Materializing>http://www.materializing.net/archives/2006/10/14184255.php]] -[[検索エンジンとの付き合い方 [mod_rewriteの術] - higuchi.com blog>http://www.higuchi.com/item/21/catid/28]] -[[mod_rewrite と Output Filter で URL を美しく - tkusano.jp>http://tkusano.jp/apache/beautify-url]] ---- この記事は #vote(おもしろかった[5],そうでもない[0]) #vote(おもしろかった[6],そうでもない[0]) - J2EEではFilterによってレスポンスを改ざんするってのがあるみたいです。 -- [[きの]] &new{2007-11-15 (木) 07:34:19}; - 非J2EE系ではmod_ext_filterでレスポンスを改ざんするってのがあるみたいです -- [[きの]] &new{2007-11-15 (木) 07:36:11}; - EncDHyhdJRvgOAbAGJq -- [[faeqlevak]] &new{2011-11-20 (日) 11:45:52}; #comment #topicpath SIZE(10){現在のアクセス:&counter;}