やりたいこと
検索フォームでクエリパラメーターを複数送信した場合、
URLの重複を避けるために、URLを301Redirecrtしたいのですが、個別のパラメーターごとにリダイレクトしたいです。
たとえば、example.com/hoge/?a=AA&b=BB&c=CC
というパラメーターのURLが合った場合、
例1.
example.com/hoge/?a=foo&b=&c=
a=foo
b= (空)
c= (空)
の場合は
example.com/foo/に301リダイレクトで転送
例2.
example.com/hoge/?a=bar&b=&c=
a=bar
b= (空)
c= (空)
の場合は
example.com/bar/に301リダイレクトで転送
例3.
example.com/hoge/?a=hogehoge&b=foo&c=bar
a=hogehoge
b=foo
c=bar
の場合には
example.com/hogehoge-foo-bar/に301リダイレクトで転送
というように、複数のクエリ文字列を分岐させてリダイレクト先をそれぞれ設定したいです。
パラメーターごとの飛び先は手動で書いてもいいので、数が多くなってしまってもいいのですが
まず、
- 複数のクエリパラメーターの取得
- 各クエリパラメーター毎に条件分岐
の仕方がわかりません。
うまく行かなかった内容
まず、例1の場合のみを想定して試しに以下のように書いてみたのですが、動きませんでした。
[code]
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)a=([^&]+)($|&)
RewriteRule .* - [E=X_A:%2]
RewriteCond %{QUERY_STRING} (^|&)b=([^&]+)($|&)
RewriteRule .* - [E=X_B:%2]
RewriteCond %{QUERY_STRING} (^|&)c=([^&]+)($|&)
RewriteRule .* - [E=X_C:%2]
RewriteRule /hoge/ /{ENV:X_QUERY_HOGE}/ [R=301,L]
[/code]
お手数おかけしますが、どなたかおわかりになる方、教えていただければと思います。