【知っておくと便利!】リダイレクト先に旧URLのクエリ(/?)を引き継がないhtaccessの記述方法
Web2018年3月26日
mod_rewriteを使ってhtaccessによるリダイレクトを行う際、旧URLにクエリ(/?)が付与されているとリダイレクト先の末尾に引き継がれてしまいます。サイトのリニューアルや引っ越しの際に複数のURLから1つのURLに一括リダイレクトさせる場合など、これらのクエリが邪魔になってしまうことがあります。
そこで本記事では、クエリ(/?)を引き継がないhtaccessの記述方法についてご紹介させていただきたいと思います。
クエリ(/?)を引き継いでしまう記述
通常、リダイレクトで以下のように記述することがよくあると思います。
RewriteRule .* https://moge.jp/ [R=301,L]
しかし、例えばサイト「https://hoge.jp/」で上記のhtaccessを配置し、「https://hoge.jp/aaa/?fuga=1」を叩くと、「https://moge.jp/?fuga=1」のようにパラメータを引き継いでリダイレクトしてしまいます。
パラメータを引き継がずにリダイレクトする記述
以下のようにリダイレクト先の末尾に「?」を付与することで、旧URLのパラメータを引き継がずにリダイレクトさせることができます。
RewriteRule .* https://moge.jp/? [R=301,L]
リダイレクト先の末尾に「?」を付与しておくことで、「https://hoge.jp/aaa/?fuga=1」を叩いても「https://moge.jp/」とクエリを引き継がずにリダイレクトさせることが可能になります。
まとめ
特に旧URLで元々クエリによる動的な制御を行っていない場合など、クエリを意識する必要のないリダイレクトであればそもそもあまり気にする必要はありません。
先日案件で動的な旧コンテンツを新しいコンテンツにリニューアルすることになり、普通にhtaccessでリダイレクトしたところ「なんかクエリ引き継いじゃってるんだけど」と指摘を受けたことから、今回ご紹介させていただいた方法を知りました。
クエリを引き継がずにリダイレクトを行いたい場合、どうぞ本記事がご参考になれば幸いです。