[PHP-users 31842] Re: URL のルーティング
所 友太
yuta-tokoro @ kccs.co.jp
2007年 4月 6日 (金) 15:34:31 JST
うちやまさん
所です。
うちやまさんがお使いの環境/フレームワークによってはマッチしない可能性も
ありますが、mod_rewrite で実際に試してみたところ、以下のようになりました。
----------------
【前提条件】
広告コード?を付加したい場合は、URLの第1パートに「ad*」を付加する。
(* には任意の数値を設定する)
広告コードを付加しない場合は、フレームワークが認知できるURLとする。
【mod_rewrite に追加するルール】
RewriteRule ^ad([0-9]*)/([a-zA-Z0-9_/]*)/?$ /$2?ad=$1 [R]
【広告コードなしでのURL書き換え結果】
(1)http://www.example.jp/
→ http://www.example.jp/ [そのまま]
(2)http://www.example.jp/controller/
→ http://www.example.jp/controller/ [そのまま]
(3)http://www.example.jp/controller/action/
→ http://www.example.jp/controller/action/ [そのまま]
【広告コード有りでのURL書き換え結果】
(4)http://www.example.jp/ad1/
→ http://www.example.jp/?ad=1 [変換]
(5)http://www.example.jp/ad2/controller/
→ http://www.example.jp/controller/?ad=2 [変換]
(6)http://www.example.jp/ad3/controller/action/
→ http://www.example.jp/controller/action/?ad=3 [変換]
----------------
上記のとおり、「ad*」を含まないURLでは、URL書き換えされずそのままのURLで
フレームワークに届きます。
「ad*」が含まれる場合は、「ad*」をGETパラメータに変換して、フレームワー
クの認知できるURLでリダイレクトされてからフレームワークに届きます。
ルールの設定のしかたで、ほとんどのパターンに対応できるはずです。
PHP-users メーリングリストの案内