Memaksa SSL dan www di .htaccess


12

Saya mencari cara untuk memaksa SSL dan www.

Saya dapat memaksa keduanya secara terpisah tetapi bersama-sama saya terus mengalami masalah pengalihan. Kode berikut berfungsi saat menangani URL dalam format ini: http://example.comdan diarahkan dengan benar https://www.example.comtetapi ketika URL yang masuk https://example.comitu tidak akan diteruskan ke https://www.example.com- Ada saran?

Sunting: itu juga harus dikirim http://www.example.comke https://www.example.com.

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Jawaban:


7

Baris pertama digunakan untuk mencegah URL internal ditulis ulang. Itu mungkin menyebabkan halaman yang berbeda ditampilkan, jadi saya telah menghapusnya.

Jika host example.comdiminta atau tidak diminta melalui HTTPS, host akan ditulis ulang menjadi https://example.com/. Yaitu, penulisan ulang http://example.com, http://www.example.comdan https://example.comuntuk https://www.example.comdalam satu tindakan.

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Dokumentasi pada mod_rewrite untuk Apache 2.2 .

Jika Anda suka subdomain forum.example.com, aturan pertama harus seperti apa adanya. Jika tidak, Anda dapat melakukan pertandingan negatif www.example.comjuga.



0

Coba ini:

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

0

Anda juga bisa menggunakan baris berikut yang saya gunakan dan bekerja dengan sempurna.

(Hapus RewriteCond atas jika Anda tidak menggunakan CloudFlare)

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

0

Baru saja menerapkan ini untuk situs saya. Bekerja seperti pesona! Ditambahkan ke bagian atas file .htaccess saya. Arahkan ulang semua contoh orang yang mengetik www atau tidak www, http atau https.

# BEGIN HTTPS Redirect
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
# END HTTPS Redirect

0

Saya menguji semua saran yang diberikan di atas, tetapi tidak ada yang mencakup keseluruhan skenario.

Saya ingin semua pengunjung berkunjung https://www.example1.com/

Beberapa kode yang disediakan oleh pengguna lain berfungsi untuk mengambil URL yang tidak aman dan / atau non-www https://www.example1.com/, namun, tidak satupun dari mereka yang tercakup https://example1.comuntuk dikonversi menjadi "www" juga.

Saya meng-host situs web saya dengan GoDaddy, kalau-kalau ada bedanya.

Ini adalah kode yang berfungsi untuk saya:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www.example1\.com$ [OR]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example1.com/$1 [L,R=301]

Baris terakhir bisa juga:

RewriteRule ^(.*)$ https://www.example1.com/$1 [R,L]

Tapi saya menggunakan kode "301" untuk mengirim pesan " pindah secara permanen " dengan harapan Google dan mungkin mesin pencari lainnya akan memperbarui tautan lama.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.