Apache retornando o cabeçalho de localização incorreto

1

O problema acontece quando você:

  1. Emita um pedido com o cabeçalho "Host", incluindo a porta, por ex. "Anfitrião: www.example.com:80", que é legal de acordo com o link . Você pode fazer isso por exemplo com curl curl -v -H "Host: www.example.com:80" -X GET -i http://www.example.com
  2. o servidor emite um redirecionamento para https para essa solicitação, no meu caso, usando o seguinte RewriteRule
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Percebi que o cabeçalho "Location" da resposta também inclui a porta e é o mesmo que o especificado no cabeçalho "Host" da solicitação. Assim, o servidor responderia com "Localização: link ", o que está errado.

Isso acontece comigo com "Apache / 2.4.7 (Ubuntu)", mas notei o problema também com o servidor de cache Varnish. Por que isso se comporta dessa maneira? Existe uma maneira de corrigir isso?

    
por reallynice 10.11.2016 / 09:00

1 resposta

0

HTTP_HOST refere-se ao cabeçalho Host: especificado, então sua configuração funciona conforme o esperado com base no que você está dizendo.

Se você quiser, pode remover a porta ou especificar outra, fazendo a correspondência e usando uma referência anterior:

Remover porta e padrão para https:

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

Mude a porta para outra coisa (8443 aqui):

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$
RewriteRule ^ https://%1:8443%{REQUEST_URI} [R=301,L]
    
por 10.11.2016 / 10:43