ロードバランサー使用時/未使用時のhttps/httpリダイレクト


特定のhtmlページへのhttpsアクセスをhttpにリダイレクトしたい時に
ちょっと手間どったのでメモ。

ファイル設置場所

testディレクトリに.htaccessを設置する

ロードバランサーなしの場合

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にマッチした場合に、以降のルールを適用しません。