[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 メーリングリストの案内