Назад | Перейти на главную страницу

Apache DirectorySlash перенаправляет запросы HTTPS обратно на HTTP

Запрос пользователя: 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]