3

Недавно я настроил веб-сайт для направления всего трафика через https. Я сделал это, изменив файл vhost, чтобы показать это

<VirtualHost *:80>
    DocumentRoot "/srv/http/example"
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost> 

Это прекрасно работает, когда я захожу в корень сайта, т.е. example.com, однако, когда я пытаюсь перейти в подкаталог, я получаю странный разрыв в URL. Например, если я наберу example.com/blog, он попытается перенаправить на https://example.comblog. Что здесь происходит?

2 ответа2

4

Мне удалось решить проблему, изменив:

https://example.com/

в

https://example.com\/

Кажется, это решило проблему, я предполагаю, что в какой-то момент Apache снял косую черту.

0

Для перенаправления сайта TLS/SSL на сайт не-TLS см. Подробности ниже:

Добавление косой черты и экранирование с обратной косой чертой восстанавливает недостающую косую черту.

Я обнаружил, что мой конкретный сайт нуждался в перенаправлении на обоих виртуальных хостах (*:80 и *:443), но один TLS не работал должным образом. Следующее добавленное к обоим виртуальным хостам исправило проблему.

Redirect permanent "/" http://example.com\/  

Примечание: документация apache показывает добавление кавычек вокруг всего. В моем случае вышеописанное работало просто отлично, позволяя разрешать страницы в URL-адресе, как и ожидалось. Источник: https://httpd.apache.org/docs/2.4/en/rewrite/avoid.html.

Примеры, экстраполированные из Source:

Redirect "/one/" "http://one.example.com/"
Redirect permanent "/" "http://example.com/"

Надеюсь, это кому-нибудь поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .