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

Запрос пользователя: 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 использовать этот заголовок?

Посоветуйте свое решение или обходной путь в этом сценарии.

5
задан 3 May 2017 в 05:45
2 ответа

Поскольку перезапись начнется до 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]
4
ответ дан 3 December 2019 в 01:29

Попробуйте использовать это правило, которое сработает до того, как DirecorySlash запустит

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [NE,R=301,L]
2
ответ дан 3 December 2019 в 01:29

Теги

Похожие вопросы