Запрос пользователя: https: //www.example.com/test
HTTPS-запросы -> AWS ELB HTTPS Listener -> Apache HTTP
Apache получает http://www.example.com/test
Перенаправление Apache он на http://www.example.com/test/
из-за DirectorySlash по умолчанию на .
Пользователь получает HTTP-запрос: http: //www.example.com/test/
AWS предоставляет HEAD для определения протокола запроса источника: % {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]