Как перенаправить HTTP на HTTPS на тот же httpd?

10

Вот что я получил:

  • CentOS 5.4 (32-разрядная версия)
  • установленный Apache httpd (версия сервера: Apache / 2.2.11 (Unix))
  • mod_rewrite уже представляет

Вопрос: как перенаправить простой http://site.com на https://site.com без использования VirtualHost?

PS: пытался найти в последующих ответах по SF, но не находит хорошего решения.

Спасибо.

mosg
источник

Ответы:

9
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Эрнест Мюллер
источник
2
RewriteRule ^(.*) https://%{HTTP_HOST}$1имеет больше смысла для меня.
Cregox
Не будет ли этот бесконечный цикл на вас?
Эрнест Мюллер
Нет, только что проверил. Это даже то, как это рекомендуется в документах - посмотрите в конце.
Cregox
1
Я получаю бесконечный цикл, используя Apache 2.4.10, развертывая на Heroku, когда я вставляю эти команды в мой .htaccess. И вариант, предложенный Кавасом, странным образом портит мой URL. Я пробовал другой набор команд: RewriteCond %{HTTP:X-Forwarded-Proto} !httpsи RewriteRule ^/?(.*) https://%{SERVER_NAME}%{REQUEST_URI}- который работает в Chrome и Firefox, но не работает в Safari и Opera. Интересно, что если я возьму три строки выше и опущу, RewriteEngine Onя больше не получу бесконечный цикл, но он все еще не работает в Safari и Opera (и работает в Chrome и Firefox).
Purplejacket,
2

Вы можете использовать mod_alias и Redirect в зависимости от каталога. Связанный документ идентифицирует дополнительные детали.

<Directory /path/to/site>
   Redirect /service https://foo2.example.com/service 
</Directory>
сигнализатор
источник