ページ
問題
PukiWiki のページは example.com/index.php?PukiWiki のような形で参照されるが、
一般的に動的ページは検索エンジンにクロールされにくいらしい。
解決するには
mod_rewriteを用いて静的コンテンツに偽装する。
ここでは以下の2つの方法を説明します。
注意
- 以下ではPukiWikiを設置したディレクトリをドキュメントルートから見て /pukiwiki/ としています。
PukiWikiを /foo/bar/ に設置している場合は、/pukiwiki/ を /foo/bar/ に読み替えて下さい。 - ページ名を / で階層化している場合
httpd.conf に AllowEncodedSlashes On を追加して下さい。
これは Apache 2.0.46 から追加されたディレクティブで、
従来デコードされなかった %2F を / にデコードするためのものです。
Offになっていて %2F が含まれている場合、mod_rewriteは一切動作しなくなります。
- ただし、このディレクティブはApache1.3系には存在しないので、
ソースを編集する必要があります。脆弱性は上がるので要注意。
- ただし、このディレクティブはApache1.3系には存在しないので、
HTMLに偽装*1
動作
例えば 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スクリプトの修正個所
「HTMLに偽装」パッチ(PukiWiki1.4.4専用)
パッチの当て方
PukiWikiをインストールしたディレクトリにパッチを置き、次のようにしてパッチを当てて下さい。*2
patch -p1 < camo_html02.diff
ディレクトリに偽装
動作
例えば Wiki/PukiWiki というページへのリンクは次のように変わります。
適用前 | http://example.com/pukiwiki/index.php?Wiki%2FPukiWiki |
---|---|
適用後 | http://example.com/pukiwiki/Wiki/PukiWiki/ |
副作用として、Sleipnirなどの ボタンで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スクリプトの修正個所
- 「ディレクトリに偽装」パッチ (2008/02/02) PukiWiki1.4.7_notbに対するパッチ
- 「ディレクトリに偽装」パッチ (2008/02/02) PukiWiki1.4.7_notb UTF-8版に対するパッチ
履歴
- camo_dir_147_utf8.diff.2
- PukiWiki1.4.7 UTF-8版に対応
- camo_dir_147.diff.2
- pcommentの不具合を修正
- camo_dir_147.diff
- PukiWiki1.4.7に対応
- camo_dir_146rc.diff
- PukiWiki1.4.6_rcに対応
- camo_dir02.diff
- PukiWiki1.4.4に対応
パッチの当て方
PukiWikiをインストールしたディレクトリにパッチを置き、次のようにしてパッチを当てて下さい。*3
patch -p1 < camo_dir_147.diff
PukiWiki1.4.4用パッチでの注意点
PukiWikiを /foo/bar/ に設置している場合は、上記パッチ内の /pukiwiki/ を /foo/bar/ に置換後、パッチを当てて下さい。
関連
- PukiWiki/改造/SEO対策
偽装ではないPukiWiki一般のSEOはこちら。
コメント等ありましたらどうぞ
参考
次回更新用メモ
- anchor_replaceでついでに%XXを%xxにしてしまうと、プロポーショナルフォントで表示されたときに短く見えていいかもしれない。