AWS で ELB(Classic Load Balancer)を通して Apache を公開している構成で、よくある 301 リダイレクトの設定をするとリダイレクトループ(ERR_TOO_MANY_REDIRECTS)になってしまう。
.htaccess の設定
ダメな例
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]良い例
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]https で受けたアクセスも、ELB から EC2 への内部的な通信は http で行っているため、普通に判定するとリダイレクトループが発生してしまう。
X-Forwarded-Proto を使ってロードバランサーを通る前のプロトコルで判定する必要がある。
参考にしたサイト



コメント