Como fazer um redirecionamento do Apache 301 para manter o referenciador?

2

Eu tenho um redirecionamento do Apache 301 no meu arquivo httpd.conf, que redireciona todo o tráfego para um único domínio para fins de canonização. Recentemente, notei que esse redirecionamento não retém o referenciador nos cabeçalhos. RFC2616 parece indicar que preservar o referenciador é opcional em um redirecionamento e realmente aconselha contra quando cruzar entre HTTP e HTTPS.

No entanto, encontrei outras perguntas nas quais um simples redirecionamento do Apache 301 preserva o referenciador e esse geralmente parece ser o caso por padrão. Quais são alguns outros fatores que podem influenciar esse comportamento com os quais eu posso brincar para preservar o referenciador? Os únicos fatores são baseados na versão do servidor Apache e / ou nas configurações do navegador do cliente (IE. Fora do meu controle)?

Meu redirecionamento:

ServerAlias www.example.com sub1.example.com   

## Redirect all sub-domains to www
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]

Com relação à regra de reescrita acima, estou visitando http://sub1.example.com . Atualmente, estou apenas trabalhando com o HTTP para simplificar até que eu possa descobrir isso.

A maneira como estou determinando o referenciador não está sendo transmitida é visitando o site redirecionado manualmente por meio de um navegador com as ferramentas do desenvolvedor abertas. Eu também determinei que o referenciador não está incluído no $_SERVER global do PHP na página de recebimento. Posso confirmar que há apenas um redirecionamento ocorrendo. A linguagem do lado do servidor é PHP.

Aqui está o cabeçalho da solicitação para a página inicial (sub1.example.com):

GET / HTTP/1.1
Host: sub1.example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

Aqui está o cabeçalho de resposta da página inicial (sub1.example.com):

HTTP/1.1 301 Moved Permanently
Date: Wed, 04 Oct 2017 18:14:34 GMT
Server: Apache
Upgrade-Insecure-Requests: 0
Location: http://www.example.com/
Cache-Control: max-age=1
Expires: Wed, 04 Oct 2017 18:14:35 GMT
Content-Length: 243
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Aqui está o cabeçalho da solicitação para a página de recebimento (www.example.com):

GET / HTTP/1.1
Host: www.example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: <redacted>

Cabeçalho de resposta da página de recebimento (www.example.com):

HTTP/1.1 200 OK
Date: Wed, 04 Oct 2017 18:14:34 GMT
Server: Apache
Upgrade-Insecure-Requests: 0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
    
por d.lanza38 03.10.2017 / 17:24

1 resposta

4

Um redirecionamento, 301 ou não, envia uma resposta ao cliente (navegador do usuário) que simplesmente diz "envie sua solicitação novamente, mas desta vez use foo.com ." Se o cliente optar por enviá-lo novamente, o mesmo acontecerá e como ele formulará a solicitação será inteiramente do cliente. Como não há ação no lado do servidor, você não pode influenciar a inclusão do referenciador.

    
por 05.10.2017 / 02:31