特定のページIDのパラメータがついたもののみリダイレクト処理して別ページへ遷移させたいとき困ったのでメモしておく。
特定のクエリ付きURLのリダイレクト処理
例えば、特定のクエリ付きURLのページ「サイトURL/blog/?id=1234」だけリダイレクト処理かけたいとき、
RewriteEngine On
RewriteCond %{http_host} ^/blog/?id=1234
RewriteRule ^(.*) サイトURL/blog/$1 [R=301,L]
と記述してもリダイレクト処理されない。
「サイトURL/blog/?id=1234」は、「サイトURL/blog/」と認識されて、「?id=1234」の部分は認識されないらしい。。。
特定の特定のクエリ付きURLのみリダイレクト処理させたいときは、下記のように記述する。
(「サイトURL/blog/?id=1234」を、「サイトURL/blog/」にリダイレクト処理する場合)
# 特定のクエリ文字列(パラメータ付きURL)のみリダイレクト
RewriteEngine On
RewriteCond %{QUERY_STRING} id=1234
RewriteRule ^.*$ /blog? [R=301,L]
リダイレクトされた〜〜〜〜。
.htaccessはヘタするとサイトが表示されなくなってしまったりするので、必ずバックアップを取ってから作業する。あー怖かった。
参考になったサイト
.htaccessでさまざまなリダイレクト処理をするとき
下記サイトがスッキリきれいにまとまってて参考になりました。
【基本Tips】htaccessリダイレクトの書き方
こちらのブログも参考になりました。
パラメータ付きURLのリダイレクトについて
記号など正規表現について書かれていて参考になりました。
.htaccessリダイレクトの覚書