O Apache DirectorySlash redireciona as solicitações HTTPS de volta para HTTP

4

Solicitação do usuário: https://www.example.com/test

HTTPS requests --> AWS ELB HTTPS Listener --> Apache HTTP

Apache recebendo http://www.example.com/test

O Apache redireciona para http://www.example.com/test/ , porque o DirectorySlash é Ativado por padrão.

O usuário termina com uma solicitação HTTP: http://www.example.com/test/

O AWS fornece um HEAD para detectar o protocolo de solicitação de origem: %{HTTP:X-Forwarded-Proto} , mas como eu digo ao Apache mod_dir DirectorySlash para usar esse cabeçalho?

Por favor, informe sua solução ou solução alternativa neste cenário.

    
por starchx 03.05.2017 / 04:45

2 respostas

3

Como a reescrita será iniciada antes do DirectorySlash, aqui está o que aconteceu e funciona:

# 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]
    
por 24.05.2017 / 06:53
2

Tente usar essa regra que será ativada antes de o DirecorySlash entrar em ação

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [NE,R=301,L]
    
por 07.05.2017 / 08:34