Apache-2.2

Apache DirectorySlash 將 HTTPS 請求重定向回 HTTP

  • May 24, 2017

使用者要求: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]

引用自:https://serverfault.com/questions/847903