URLパラメータに対するApacheリダイレクト

URLパラメータに対するApacheリダイレクト

URLパラメータだけ違う時のApacheのリダイレクト処理の実装。

関連ページ
Apacheでは比較的に簡単にリダイレクト処理を実装できますが、"?"以降のリクエストパラメータだけ違う時は少し捻った実装が必要になります。

RewriteCondを利用してリダイレクト

Apacehでは.confファイルに書き込むことで301リダイレクト処理を実装できます。
例えば、
[対象のサイトドメイン]/profile
というURLを
[対象のサイトドメイン]/home
にリダイレクトさせたい場合は次の通りです。
    RewriteEngine On
    RewriteRule ^/profile /home [R=301,L]

ただしこの実装は、リクエストパラメータが絡んでくると全く機能しなくなります。
例えば、
[対象のサイトドメイン]/note?id=1
というURLを
[対象のサイトドメイン]/note?id=2
にリダイレクトさせたい場合、次の記述だと動きません。
    RewriteEngine On
    RewriteRule ^/note?id=1 /note?id=2 [R=301,L]

リクエストパラメータが絡む場合は、RewriteRuleの前にRewriteCondの記述が必要になります。
実装は次の通り。
    RewriteEngine On
    RewriteCond %{QUERY_STRING} id=1
    RewriteRule ^/note /note?id-2 [R=301,L]
当サイトでは、このような記述で unity-engineer.top/note?id=U0004 にアクセスしても unity-engineer.top/note?id=U0001 にリダイレクトしています。
0
0