25
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クエリパラメータ付きのURLをmod_rewriteでリダイレクトさせる

Last updated at Posted at 2016-04-22

/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使う上ではきっと初歩的なところだと思うのですが
一瞬「あれ?」となったので備忘録的にメモっておきます。

25
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?