Bagaimana cara mengalihkan HTTP ke HTTPS di httpd yang sama?

10

Inilah yang saya dapatkan:

  • CentOS 5.4 (32-bit)
  • menginstal Apache httpd (Versi server: Apache / 2.2.11 (Unix))
  • mod_rewrite sudah hadir

Pertanyaan: bagaimana cara mengarahkan http://site.com sederhana ke https://site.com tanpa menggunakan definisi VirtualHost?

PS: mencoba mencari jawaban nanti di SF, tetapi tidak menemukan solusi yang bagus.

Terima kasih.

mosg
sumber

Jawaban:

9
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Ernest Mueller
sumber
2
RewriteRule ^(.*) https://%{HTTP_HOST}$1lebih masuk akal bagi saya.
cregox
Tidakkah itu loop tak terbatas pada Anda?
Ernest Mueller
Tidak, baru saja mengujinya. Bahkan seperti yang disarankan di bawah dokumen - lihat di bagian akhir.
cregox
1
Saya mendapatkan infinite loop menggunakan Apache 2.4.10, menggunakan Heroku, ketika saya memasukkan perintah-perintah itu ke .htaccess saya. Dan varian yang disarankan oleh Cawas anehnya mangelek URL saya. Saya sudah mencoba serangkaian perintah yang berbeda: RewriteCond %{HTTP:X-Forwarded-Proto} !httpsdan RewriteRule ^/?(.*) https://%{SERVER_NAME}%{REQUEST_URI}- yang berfungsi di Chrome dan Firefox, tetapi gagal di Safari dan Opera. Menariknya, jika saya mengambil tiga baris di atas dan menghilangkan RewriteEngine Onsaya tidak lagi mendapatkan infinite loop, tetapi masih gagal di Safari dan Opera (dan berfungsi di Chrome dan Firefox).
Purplejacket
2

Anda dapat menggunakan mod_alias dan Redirect berdasarkan direktori. Dokumen yang ditautkan mengidentifikasi detail tambahan.

<Directory /path/to/site>
   Redirect /service https://foo2.example.com/service 
</Directory>
Warner
sumber