when I visit the site:
https://example.com
instead ofhttps://example.com/
in the browser address bar, I gethttps://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.