ユーザーリクエスト:https://www.example.com/test
HTTPS requests --> AWS ELB HTTPS Listener --> Apache HTTP
Apacheがhttp://www.example.com/test
を取得
DirectorySlashはデフォルトでOnであるため、Apacheはhttp://www.example.com/test/
にリダイレクトします。
ユーザーはHTTPリクエストで終了します:http://www.example.com/test/
AWSはHEAD= Origin要求プロトコルを検出するために%{HTTP:X-Forwarded-Proto}
を提供していますが、Apache mod_dir DirectorySlashにそのヘッダーを使用するように指示するにはどうすればよいですか?
このシナリオでの解決策または回避策をアドバイスしてください。
書き換えはDirectorySlashの前に実行されるため、最終的には次のようになり、機能します。
# Redirect to HTTPS before Apache mod_dir DirectorySlash redirect to HTTP
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteCond %{LA-U:REQUEST_FILENAME} -d
RewriteRule ^/(.*[^/])$ https://%{HTTP_Host}/$1/ [R=301,L,QSA]
DirecorySlashが起動する前に起動するこのルールを使用してみてください
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [NE,R=301,L]