Top/PukiWiki/改造/静的コンテンツに偽装/ページ

ページ の変更点はてなブックマーク


**問題
PukiWiki のページは example.com/index.php?PukiWiki のような形で参照されるが、~
一般的に動的ページは検索エンジンにクロールされにくい''らしい''。

**解決するには
mod_rewriteを用いて静的コンテンツに偽装する。~
ここでは以下の2つの方法を説明します。
-[[HTMLに偽装>#html]]
-[[ディレクトリに偽装>#dir]]

**注意
-以下ではPukiWikiを設置したディレクトリをドキュメントルートから見て /pukiwiki/ としています。~
PukiWikiを /foo/bar/ に設置している場合は、/pukiwiki/ を /foo/bar/ に読み替えて下さい。
-ページ名を / で階層化している場合~
httpd.conf に ''[[AllowEncodedSlashes>http://httpd.apache.org/docs-2.0/ja/mod/core.html#allowencodedslashes]] On'' を追加して下さい。~
これは Apache 2.0.46 から追加されたディレクティブで、~
従来デコードされなかった %2F を / にデコードするためのものです。~
Offになっていて %2F が含まれている場合、mod_rewriteは一切動作しなくなります。~
--ただし、このディレクティブはApache1.3系には存在しないので、~
ソースを編集する必要があります。脆弱性は上がるので要注意。


*HTMLに偽装((PukiWiki1.4系はXHTML1.1だから .xhtm に偽装する方が正しいのかもしれないけど)) [#html]
**動作
例えば Wiki/PukiWiki というページへのリンクは次のように変わります。
|~適用前|http://example.com/pukiwiki/index.php?Wiki%2FPukiWiki|
|~適用後|http://example.com/pukiwiki/Wiki%2FPukiWiki.html|

**Apacheの設定
下記を次のどちらかに記述
-PukiWikiを設置したディレクトリの.htaccess内
-httpd.confのPukiWikiを設置したディレクトリを指定した<Directory>コンテナ内
 Options FollowSymLinks
 
 RewriteEngine on
 RewriteOptions MaxRedirects=1
 RewriteBase /pukiwiki/
 
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.+)\.html$ index.php?$1 [L]

**PHPスクリプトの修正個所
&ref(camo_html02.diff,,「HTMLに偽装」パッチ);(PukiWiki1.4.4専用)~

**パッチの当て方
PukiWikiをインストールしたディレクトリにパッチを置き、次のようにしてパッチを当てて下さい。((WindowsでPukiWikiを運用している方は[[GNU patch v2.1 for Win32>http://www.vector.co.jp/soft/win95/prog/se015025.html]]を使って下さい。))
 patch -p1 < camo_html02.diff

*ディレクトリに偽装 [#dir]
**動作
例えば Wiki/PukiWiki というページへのリンクは次のように変わります。
|~適用前|http&#x3a;//example.com/pukiwiki/index.php?Wiki%2FPukiWiki|
|~適用後|http&#x3a;//example.com/pukiwiki/Wiki/PukiWiki/|

副作用として、[[Sleipnir>http://www.fenrir.co.jp/sleipnir/]]などの &ref(upperdir.png,nolink,nothumb,上のディレクトリに移動); ボタンでPukiWikiの親階層に上がれるようになります。

**Apacheの設定
下記を次のどちらかに記述
-PukiWikiを設置したディレクトリの.htaccess内
-httpd.confのPukiWikiを設置したディレクトリを指定した<Directory>コンテナ内
 Options FollowSymLinks
 
 RewriteEngine on
 RewriteOptions MaxRedirects=1
 RewriteBase /pukiwiki/
 
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.+)/$ index.php?$1 [L]

**PHPスクリプトの修正個所
-&ref(camo_dir_147.diff.2,,「ディレクトリに偽装」パッチ); &color(#999999){(2008/02/02)}; PukiWiki1.4.7_notbに対するパッチ
-&ref(camo_dir_147_utf8.diff.2,,「ディレクトリに偽装」パッチ); &color(#999999){(2008/02/02)}; PukiWiki1.4.7_notb UTF-8版に対するパッチ

**履歴
-&ref(camo_dir_147_utf8.diff.2);
--PukiWiki1.4.7 UTF-8版に対応
-&ref(camo_dir_147.diff.2);
--pcommentの不具合を修正
-&ref(camo_dir_147.diff);
--PukiWiki1.4.7に対応
-&ref(camo_dir_146rc.diff);
--PukiWiki1.4.6_rcに対応
-&ref(camo_dir02.diff);
--PukiWiki1.4.4に対応

**パッチの当て方
PukiWikiをインストールしたディレクトリにパッチを置き、次のようにしてパッチを当てて下さい。((WindowsでPukiWikiを運用している方は[[GNU patch v2.1 for Win32>http://www.vector.co.jp/soft/win95/prog/se015025.html]]を使って下さい。))
 patch -p1 < camo_dir_147.diff

**PukiWiki1.4.4用パッチでの注意点
PukiWikiを /foo/bar/ に設置している場合は、上記パッチ内の /pukiwiki/ を /foo/bar/ に置換後、パッチを当てて下さい。

*関連
-[[PukiWiki/改造/SEO対策]]
>偽装ではないPukiWiki一般のSEOはこちら。

*コメント等ありましたらどうぞ :)
#pcomment(,10,reply)

*参考
-[[ずんWiki - mod_rewrite>http://www.kawaz.jp/pukiwiki/?mod_rewrite]] ([[ずんWiki>http://www.kawaz.jp/pukiwiki/]])
-[[羊堂本舗:RewriteRule]] %2Fの罠
-[[hiki-dev:178>http://yowaken.dip.jp/w3ml/hiki-dev/msg/178]]

*次回更新用メモ
-anchor_replaceでついでに%XXを%xxにしてしまうと、プロポーショナルフォントで表示されたときに短く見えていいかもしれない。

*Amazon
*Amazon
#amazon(4798109223,left)
#amazon(479733245X,left)
#amazon(4798119865,left)
差分 一覧