Jak przekierować HTTP na HTTPS na tym samym httpd?

10

Oto co mam:

  • CentOS 5.4 (32-bit)
  • zainstalowany Apache httpd (Wersja serwera: Apache / 2.2.11 (Unix))
  • mod_rewrite już prezentuje

Pytanie: jak przekierować prosty http://site.com na https://site.com nieużywający definicji VirtualHost?

PS: próbowałem znaleźć w późniejszych odpowiedziach na SF, ale nie znalazłem dobrego rozwiązania.

Dzięki.

mosg
źródło

Odpowiedzi:

9
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Ernest Mueller
źródło
2
RewriteRule ^(.*) https://%{HTTP_HOST}$1ma dla mnie więcej sensu.
cregox
Czy ta nieskończona pętla nie dotyczy ciebie?
Ernest Mueller
Nie, właśnie go przetestowałem. Jest nawet tak, jak zaleca się w dokumentach - spójrz na koniec.
cregox
1
Dostaję nieskończoną pętlę za pomocą Apache 2.4.10, wdrażającego się na Heroku, kiedy wstawiam te polecenia do mojego .htaccess. A wariant zaproponowany przez Cawasa dziwnie zniekształca mój adres URL. Próbowałem innego zestawu poleceń: RewriteCond %{HTTP:X-Forwarded-Proto} !httpsi RewriteRule ^/?(.*) https://%{SERVER_NAME}%{REQUEST_URI}- który działa w Chrome i Firefox, ale nie działa w Safari i Opera. Co ciekawe, jeśli wezmę trzy powyższe linie i pominąłem RewriteEngine On, nie otrzymam już nieskończonej pętli, ale nadal nie działa ona w Safari i Operze (i działa w Chrome i Firefox).
Purplejacket
2

Możesz użyć mod_alias i Redirect na podstawie katalogu. Powiązany dokument określa dodatkowe szczegóły.

<Directory /path/to/site>
   Redirect /service https://foo2.example.com/service 
</Directory>
Warner
źródło