barra invertida dupla do proxy reverso do Apache

1

Eu tenho uma configuração de proxy reverso no meu host virtual. No entanto, quando eu visito o site: https://example.com em vez de https://example.com/ na barra de endereço do navegador, recebo https://example.com// . Por que eu tenho duas barras à direita? Há algo de errado com o meu conf apache? (fornecido abaixo) ou a barra final é algo que pode ter sido adicionado pelo apache conf / .htaccess por um site que está por trás de um proxy reverso?

Minha configuração atual:

<VirtualHost *:80>
    ...
    RewriteEngine On
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
    ...
    ProxyRequests Off
    SSLProxyEngine on
    ProxyPass / https://example.proxy.com/
    ProxyPassReverse / https://example.proxy.com/
</VirtualHost>
    
por Liliane 29.03.2018 / 13:56

1 resposta

1

when I visit the site: https://example.com instead of https://example.com/ in the browser address bar, I get https://example.com//.

Esses dois pedidos, com e sem a barra final, são realmente a mesma coisa. O navegador enviará a mesma solicitação ao seu servidor nos dois casos. Então, é difícil ver por que você obteria uma resposta diferente nesses dois casos, a menos que houvesse algum problema de cache local?

(Veja minha resposta para a seguinte pergunta na pilha do Pro Webmasters para obter mais informações sobre como o navegador lida com a barra no domínio: link )

No entanto, a diretiva RewriteRule no seu contêiner <VirtualHost *:80> sempre resultará em uma barra dupla - talvez você esteja vendo uma resposta armazenada em cache (ou preenchimento automático do navegador) dessa forma anterior ( errônea) redirecionar? Observe que os redirecionamentos 301 são armazenados em cache pelo navegador.

RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Em um contexto virtualhost , o $1 backreference irá capturar o prefixo de barra no caminho da URL (isso difere de um diretório ou .htaccess contexto).

Você precisa remover a barra na substituição ou retirar a primeira barra do padrão capturado (ou usar a variável REQUEST_URI server). Por exemplo:

RewriteRule ^/(.*) https://example.com/$1 [R=301,L]

(Não é necessário usar a âncora de fim de string, pois * é voraz por padrão.)

E verifique se o cache do seu navegador está limpo.

    
por 29.03.2018 / 14:26