最終更新: 2010-05-24 (月) 20:59:54
このページをDeliciousに追加 このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

新バージョンのテストを こちら で行っています。

rewritemap.inc.php

サマリApache の RewriteMap もどきの機能を追加し、任意の静的ページ風 URL に偽装
リビジョン2.0
対応バージョン1.4.6, 1.4.7, Plus! rev.1494
作者revulo
ライセンスGPLv2

目次

概要

以下のような機能をサポートするプラグインです。 さらに付属のパッチを PukiWiki 本体に適用することで、 BracketName などのリンク先もこの形式の URL にすることができます。

  • 静的なページ風の URL に偽装します
    (html 形式やディレクトリ形式に設定可能です)
(ページ名)PukiWiki/Tips
通常の URLhttp://…/index.php?PukiWiki%2FTips
html 形式http://…/PukiWiki/Tips.html
ディレクトリ形式http://…/PukiWiki/Tips/
  • :config/RewriteMap ページにルールを書くことで、ページ名とは独立に URL を設定できます
    (ページ名が日本語でも、アルファベットの URL にすることができます)
(ページ名)PukiWiki/改造
変換前の URLhttp://…/PukiWiki/%B2%FE%C2%A4.html
変換後の URLhttp://…/PukiWiki/Hack.html
  • :config/Redirect ページにルールを書くことで、ページ間のリダイレクトを一括管理できます
    (ページを名前変更して URL が変わった場合に、旧 URL → 新 URL へリダイレクトさせたりするのに便利です)

サンプル

当サイトの PukiWiki には、このプラグインが組み込んであります。 左のメニューから適当なページに飛んで、 〜.html という形式の URL になっていることを確認してみて下さい。

動作環境

Apache や lighttpd で、mod_rewrite の機能が使える環境であることが必要です。

インストール

アーカイブファイルをダウンロードし、 PukiWiki をインストールしてあるディレクトリで展開します。

$ tar xvfz rewritemap-2.0.tar.gz

設定ファイルの雛型が欲しい場合は、それもダウンロードして下さい。 展開する際には、上書き禁止の k オプションとパーミッション保持の p オプションを付けて下さい。

$ tar xvfzkp rewritemap_template-20070505.tar.gz

BracketName などのリンク先もこの形式の URL にしたい場合は、PukiWiki 本体にパッチをあてます *1

$ tar xvfz pukiwiki_rewritemap-20080127.tar.gz
$ patch --binary -Np1 < pukiwiki-1.4.7_rewritemap.diff

必要に応じて、その他のプラグインにもパッチをあてて下さい。

$ tar xvfz plugin_rewritemap-20090201.tar.gz
$ patch -p0 < counterlist-1.4_rewritemap.diff
$ patch -p0 < socialbookmark-1.5_rewritemap.diff
$ patch -p0 < treeview-1.2_rewritemap.diff

PukiWiki Plus! の場合は、index.php もしくは pukiwiki.ini.php にある ROOT_URI の値を設定する必要があります。 以下に、設定例をいくつか挙げておきます。

define('ROOT_URI', '/');           // トップページの URL が http://example.com/ のような場合
define('ROOT_URI', '/pukiwiki/');  // トップページの URL が http://example.com/pukiwiki/ のような場合

この後、以下のいずれかの設定を行って下さい。
なお、 バージョン 2.0 以降では RewriteRule の設定方法が変わっているので注意して下さい

html 形式の URL にする

rewritemap.ini.php の設定を以下のように変更します。

define('PLUGIN_REWRITEMAP_POSTFIX', '.html');

.htaccess に以下のような設定を追加して下さい。
(http://example.com/wiki/〜.html のような URL にする場合の例)

RewriteEngine on
RewriteBase /wiki
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.html$ index.php?cmd=rewritemap&page=$1 [QSA,L]

ディレクトリ形式の URL にする

rewritemap.ini.php の設定を以下のように変更します。

define('PLUGIN_REWRITEMAP_POSTFIX', '/');

.htaccess に以下のような設定を追加して下さい。
(http://example.com/wiki/〜/ のような URL にする場合の例)

RewriteEngine on
RewriteBase /wiki
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?cmd=rewritemap&page=$1 [QSA,L]

設定

rewritemap.inc.php の先頭部分で以下の値を設定することで、動作をカスタマイズできます。

PLUGIN_REWRITEMAP_POSTFIX
URL の最後の部分の文字列
PLUGIN_REWRITEMAP_ALIAS_CONFIG
URL とページ名との変換ルールを記述するページ名
PLUGIN_REWRITEMAP_REDIRECT_CONFIG
リダイレクトのルールを記述するページ名
PLUGIN_REWRITEMAP_ALIAS_REGEX
URL とページ名との変換ルールの記述フォーマット (正規表現)
PLUGIN_REWRITEMAP_REDIRECT_REGEX
リダイレクトのルールの記述フォーマット (正規表現)

URL 用のエイリアスの設定

:config/RewriteMap ページに表形式でルールを書くことで、 各ページに URL 用の別名を設定することができます。 例えば、PukiWiki/自作プラグイン というページの URL を PukiWiki/Plugin.html にするには、以下のように記述します。

|PukiWiki/Plugin    |PukiWiki/自作プラグイン|

リダイレクトのルールの設定

:config/Redirect ページに表形式でルールを書くことで、 リダイレクト用の仮想的なページ名を設定することができます。 例えば、PukiWiki/インストール → PukiWiki/設定 のようにページを名前変更した場合、

|PukiWiki/インストール  |PukiWiki/設定|

のように記述することによって、 旧 URL へのアクセスを自動的に新 URL へリダイレクトさせることができます。 このリダイレクトは 301 のステータスコードを返しているので、 Google などの検索エンジンにも URL が変わったことが伝わります。

 

リダイレクトに関する注意事項をいくつか書いておきます。

  • 外部のページへのリダイレクトはできません。PukiWiki のページ内でのリダイレクトにのみ対応しています。
  • リダイレクト元のページが存在する場合はリダイレクトしません。(存在しないページ) → (存在するページ) というルールだけが有効です。
  • リダイレクトの回数は1回限りに制限しています。A → B, B → C のようなルールは、A → C, B → C のように書き換えて下さい。

ダウンロード

  • pukiwiki_rewritemap-20080127.tar.gz
    • PukiWiki 1.4.6 の本体および付属プラグイン用パッチ
    • PukiWiki 1.4.7 (EUC-JP 版、UTF-8 版) の本体および付属プラグイン用パッチ
    • PukiWiki Plus! i18n 版 rev.1494 の本体および付属プラグイン用パッチ

更新履歴

  • プラグインの履歴
    バージョン日付更新内容
    2.02007/05/05UTF-8 版 PukiWiki に正式対応
    日本語のページ名をうまく扱えないことがあった不具合を修正
    リダイレクト機能を追加
    1.22006/11/11変換ルールをキャッシュするようにして高速化
    1.12006/10/27存在しないページを指定した場合は 404 を返すように修正
    1.02006/04/23初公開
  • PukiWiki 本体用パッチの履歴
    日付更新内容
    2008/01/27PukiWiki Plus! の newpage_subdir プラグインが動かなくなっていたのを修正
    2007/12/16PukiWiki Plus! i18n 版 rev.1494 用のパッチを追加
    2007/06/02edit.inc.php プラグインにもパッチをあてるように修正
    2007/05/05PukiWiki 1.4.7 (UTF-8 版) 用のパッチを追加
    2006/06/26PukiWiki 1.4.7 用のパッチを追加
    2006/04/23PukiWiki 1.4.6 用のパッチを公開

関連ページ

*1 Windows で patch コマンドを使う場合、改行コード CR+LF のファイルを扱うには --binary オプションが必要なようです。
*2 私が作ったものではないので、動作保証やサポートはあまり期待しないで下さい。

(Counter:1, Today:1, Yesterday:0)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   最終更新のRSS