※フォームはindex.cgiで生成。
[目的1] フォームからのGET送信時にブラウザのアドレスバーに表示されるURLを静的にしたい。
[目的2] 変換されたURLから検索結果が返ってくるようにしたい。
イメージ
[A] http://example.com/?foo=aa&bar=bb → [B] http://example.com/foo_aa/bar_bb/
暫定的にですが、以下のように実現させました。
(1) フォームのactionに、ラッパースクリプトとしてurl.cgiを指定する。
[A] → [C] http://example.com/url.cgi?foo=aa&bar=bb
(2) url.cgiが、[C]を[B]に変換して301リダイレクト。※[目的1]実現。
[C] → [B]
(3) mod_rewriteで、そのURLが実在しない場合のみ、[B]を例えば以下のように変換させる。
[B] → [D] http://example.com/(index.cgi)?param=foo_aa/bar_bb/
(4) index.cgiが、内部でparamを再変換して、検索結果を表示する。※[目的2]実現。
・これは一般的なやり方として「アリ」か?
・僕が気づいてない弊害や問題点はないか?
・もっとスマートな解法はないか?
是非アドバイスをお願い致します。
コメント(2件)
ご容赦頂けますと幸いです。
[D]のようにURLを処理した理由は、
http://example.com/?foo=aa&bar=bb&dummy=
→ http://example.com/foo_aa/bar_bb/
http://example.com/?foo=aa&bar=&dummy=cc
→ http://example.com/foo_aa/dummy_cc/
のように、変換されるURLを可変にしたいからです。
500文字制限のため、要点以外をだいぶ略したので、
わかりづらい説明がありましたら、お手数ですがご指摘ください。