Запрос пользователя: https://www.example.com/test
HTTPS requests --> 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]