На моем виртуальном хосте установлен обратный прокси-сервер. Однако, когда я захожу на сайт: https://example.com
вместо https://example.com/
в адресной строке браузера, я получаю https: //example.com//
. Почему у меня две косые черты в конце? Что-то не так с моим apache conf? (приведено ниже) или завершающая косая черта может быть добавлена apache conf / .htaccess сайтом, который находится за обратным прокси-сервером?
Моя текущая настройка:
<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>
при посещении сайта:
https://example.com
вместоhttps://example.com/
в адресной строке браузера , Я получаюhttps://example.com//
.
Эти два запроса, с косой чертой и без нее, на самом деле одно и то же. В обоих случаях браузер отправит на ваш сервер один и тот же запрос. Таким образом, трудно понять, почему вы получите другой ответ в этих двух случаях, если только не возникла проблема с локальным кешированием?
(См. Мой ответ на следующий вопрос в стеке Pro Webmasters для получения дополнительной информации о том, как браузер обрабатывает завершающую косую черту в домене: https://webmasters.stackexchange.com/questions/35643/is-trailing-slash-automagically-added-on-click-of-home-page-url-in- браузер )
Однако директива RewriteRule
в вашем контейнере
будет всегда приведет к двойному слешу - так что, возможно, вы видите кешированный ответ (или автозаполнение браузера) от этого более раннего (ошибочного) перенаправления? Обратите внимание, что 301 редирект жестко кэшируется браузером.
RewriteRule ^ (. *) $ Https://example.com/$1 [R = 301, L]
В контексте виртуального хоста обратная ссылка $ 1
фиксирует префикс косой черты на пути URL (это отличается от каталога или . htaccess
context).
Вам необходимо либо удалить косую черту в подстановке , либо убрать первую косую черту из захваченного шаблона (или использовать серверную переменную REQUEST_URI
). Например:
RewriteRule ^/(.*) https://example.com/$1 [R=301,L]
(Нет необходимости в привязке конца строки, поскольку *
по умолчанию является жадным.)
И убедитесь, что кеш вашего браузера очищен.