ロードバランサー使用時/未使用時のhttps/httpリダイレクト
特定のhtmlページへのhttpsアクセスをhttpにリダイレクトしたい時に
ちょっと手間どったのでメモ。
ロードバランサーなしの場合
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule ^sample.html$ http://www.hogehoge.co.jp/test/sample.html [R=301,L]
ロードバランサーありの場合
443 → 80 の変換をしている場合、
httpsがhttpに変換されるので元プロトコロで判断します。
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} ^https$
RewriteRule ^sample.html$ http://www.hogehoge.co.jp/test/sample.html [R=301,L]
条件を間違うとリダイレクトループが発生してページを表示できなるので注意(できなくなった)。
リダイレクト先の間違いにも注意する(間違えた)。
[R=301,L] のR=301 はhttpステータス301(恒久的に移動)を意味します。
L は Ruleにマッチした場合に、以降のルールを適用しません。