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

ページはてなブックマーク

問題

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系には存在しないので、
      ソースを編集する必要があります。脆弱性は上がるので要注意。

HTMLに偽装*1 Permalinkはてなブックマーク

動作

例えば 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スクリプトの修正個所

file「HTMLに偽装」パッチ(PukiWiki1.4.4専用)

パッチの当て方

PukiWikiをインストールしたディレクトリにパッチを置き、次のようにしてパッチを当てて下さい。*2

patch -p1 < camo_html02.diff

ディレクトリに偽装 Permalinkはてなブックマーク

動作

例えば 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スクリプトの修正個所

履歴

パッチの当て方

PukiWikiをインストールしたディレクトリにパッチを置き、次のようにしてパッチを当てて下さい。*3

patch -p1 < camo_dir_147.diff

PukiWiki1.4.4用パッチでの注意点

PukiWikiを /foo/bar/ に設置している場合は、上記パッチ内の /pukiwiki/ を /foo/bar/ に置換後、パッチを当てて下さい。

関連

コメント等ありましたらどうぞ :)

name:

参考

次回更新用メモ

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

Amazon

Amazon

*1 PukiWiki1.4系はXHTML1.1だから .xhtm に偽装する方が正しいのかもしれないけど
*2 WindowsでPukiWikiを運用している方はGNU patch v2.1 for Win32を使って下さい。
*3 WindowsでPukiWikiを運用している方はGNU patch v2.1 for Win32を使って下さい。
差分 一覧