Apache-2.2
Apache DirectorySlash 將 HTTPS 請求重定向回 HTTP
使用者要求:
https://www.example.com/test
HTTPS requests --> AWS ELB HTTPS Listener --> Apache HTTP
阿帕奇得到
http://www.example.com/test
http://www.example.com/test/
由於 DirectorySlash預設為On , Apache 將其重定向到。使用者最終收到一個 HTTP 請求:
http://www.example.com/test/
AWS 提供了一個 HEAD 來檢測源請求協議:
%{HTTP:X-Forwarded-Proto}
,但是我如何告訴 Apache mod_dir DirectorySlash 使用該 Header?請在這種情況下建議您的解決方案或解決方法。
由於 rewrite 將在 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]