/fuga/?id=xxxxxx
みたいなURLを
/fuga/xxxxxx/
こうしたいみたいな話、よくあります。
さっそくmod_rewriteのRewriteRule使って飛ばしてみます。
早速のRewriteRule
RewriteEngine on
RewriteRule ^fuga/?id=(.+) /fuga/$1/ [L,R=301]
これで試してみましたが、うまくリダイレクトされません。
ちなみにたまたまやりたきことが「L,R=301」だったのでそのまま書いてます。
クエリパラメータの拾い方
どうやらRewriteRuleで検証する値にクエリパラメータは含まれないようです。
ということでRewriteCondを用いた方法を考えてみます。
RewriteEngine on
RewriteCond %{QUERY_STRING} id=(.+)
RewriteRule ^fuga/ /fuga/%1/ [L,R=301]
他にクエリパラメータがあった場合とかは一旦考えてません。
後方参照に関しては、RewriteRule内のものであれば「$」で取れましたが、RewriteCondのものは「%」になるので
その点は注意が必要ですね。
クエリパラメータのままで置換したい場合
たとえばid=1234だったらid=5678にしたいようなケース。
同じように設定すれば対応可能です。
RewriteEngine on
RewriteCond %{QUERY_STRING} id=1234
RewriteRule ^fuga/ /fuga/?id=5678 [L,R=301]
idの値まできちんと指定すれば問題なくリダイレクト可能です。
RewriteRule使う上ではきっと初歩的なところだと思うのですが
一瞬「あれ?」となったので備忘録的にメモっておきます。