WebアプリケーションですべてのURLをhttpsにリダイレクトしようとしています。
エラスティックロードバランサーの背後にec2インスタンスがあります。 SSLはロードバランサーで終了します。
リダイレクトを試みると、おなじみの「このページは決して完了しない方法で要求している」という結果になります。
ロードバランサは、443と80をインスタンスのポート80に転送します。
これは私の.htaccessにあるものです。
RewriteCond %{X-FORWARDED-PROTO} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
誰かがこれを達成する方法を知っていますか?誠にありがとうございます。
未テストですが、私はこれを試します
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Mike の答えはほぼ正しいですが、ロードバランサーがec2インスタンスがまだ正常に動作していることを確認するには、ヘルスチェックルーチンを実行する必要があることを指摘することが重要です。これは追加のRewriteCond
で実行できます
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/alive\.html$
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
...どこ alive.html
は、ヘルスチェックファイルの名前です。