.htaccess を使って、リダイレクト先にパラメータを受け渡す

URLにパラメータを付けて、リダイレクトした後もそのパラメータを引き継ぎたい、という場合の対処法です。覚えておくととても便利。

もしプログラム側でリダイレクトをしていると、プログラム内にパラメータを受けなくてはならず、適切に処理をしないとセキュリティの対象となってしまいます。GETパラメータは、ユーザーの任意の入力を受け付けるので、サニタイズしていないと大変まずいです。しっかりサニタイズしましょう。

今回のこの方法が使えるのであれば、プログラム側では処理をしないため、対応する部分が一つ減るし管理も減ります。地味ですがとても重要。

2016-09-06-qsa-blog-ogp.jpg

条件

  1. リダイレクト元に、URLパラメータがある(クエリー・ストリング)
  2. リダイレクトの処理は、.htaccess で行っている

解決策

RewriteRule のフラグに、QSA を付与する。

RewriteEngine on
RewriteRule ^hogehoge.html$ https://www.fugafuga.com/index.html [R=301,QSA,L]

参考

https://blog.fkoji.com/2008/07172155.html