/くろまじゅつしへの道
`` 膨大な設定例やドキュメントがあるにもかかわらず、 mod_rewrite は黒魔術である。かなりイケてるっぽい黒魔術だが、 やっぱり所詮は黒魔術である。''
-- Brian Moore
Apacheのrewriteは「黒魔術」と呼ばれるほど多彩であると同時に理解しづらい面を持っています。
少しでもそれを解きほぐし、「くろまじゅつし」を多く輩出できればいいな、と思っています。
知らなくても使えないことはないですが、正直使いどころは相当制限されます。
正規表現 - Wikipedia
サルにもわかる正規表現入門
正規表現入門
サクラエディタ(無料)やEmEditor(有料)では正規表現による検索が行えます。これらで練習や確認をしてみるとよいかもしれません(慣れるとエディタ上の正規表現検索は便利で手放せなくなります)。
黒魔術を黒魔術たらしめているものです。
正規表現を使わないRewrite。例えば/fuga/abc.phpを/hoge/に偽装。
RewriteRule /hoge/ /fuga/abc.php
こういう書き方もアリですが、パッとしないですよね。
RewriteRule /hoge/([0-9]*)/([0-9]*)/ /fuga/abc.php?type=$1&id=$2
これならどうでしょう?
/hoge/100/200/が内部では/fuga/abc.php?type=100&id=200になります。
しかも、数字以外が指定されたときは、(実際にそのパスにファイルが存在しない限り)404エラーになります。
正しくない入力値をアプリケーションに入る前にチェックするフィルタの役割も任せることが可能になるわけです。
他にも、こういう使い方もあります。
wwwありとなしのドメインの統合
変態的変換を可能にする「奥の手」です。日本語URLの扱いも、DB連動のワンタイムURLも可能にします。
RewriteMap?
エンコードされたURLのRewrite
混雑制御
DB連携のワンタイムURL?