web-dev-qa-db-ja.com

Apache DirectorySlashはHTTPSリクエストをHTTPにリダイレクトします

ユーザーリクエスト: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にそのヘッダーを使用するように指示するにはどうすればよいですか?

このシナリオでの解決策または回避策をアドバイスしてください。

7
starchx

書き換えは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]
5
starchx

DirecorySlashが起動する前に起動するこのルールを使用してみてください

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [NE,R=301,L]
2
Sameer Naik