Saya ingin aturan penulisan ulang yang mengalihkan semuanya ke https://
DAN www
.
Misalnya http://example.com
harus pergi kehttps://www.example.com
Inilah yang saya miliki:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ "https\:\/\/www\.example\.com\/$1" [R=301,L]
htaccess
apache
https
mod-rewrite
Akan
sumber
sumber
http://example.com
(mis. HTTP dan non-www), karena ini akan mengarahkan ulang ke HTTPS pada host yang sama (mis. Tanpawww
) dan kemudian mengarahkan kembaliwww
sebagai pengalihan kedua. Anda dapat memperbaikinya dengan hanya membalik kedua aturan ini.https://
, terutama jika Anda menggunakan HSTS. Dengan cara ini, preferensi HSTS Anda dapat disimpan oleh browser untuk domain Anda dan permintaan berikutnya akan selalu default kehttps://
Kondisi Anda secara implisit DAN akan dan kondisi kedua Anda akan selalu benar (kecuali jika Anda memiliki domain lain), sehingga aturan Anda saat ini hanya akan mengarahkan lalu lintas non-SSL.
Anda perlu
OR
kondisi dan meniadakan kondisiwww
(kedua):Jika
SERVER_PORT
bukan 443 (mis. Bukan HTTPS) atau host tidak memulai denganwww.
(mis. Anda mengakses domain kosong) maka arahkan ke URL kanonik.Namun, apakah ini akan dialihkan
https://example.com
kehttps://www.example.com
akan tergantung pada sertifikat keamanan Anda. (Situs Anda harus dapat diakses oleh www dan non-www melalui SSL agar pemicu .htaccess diarahkan.)sumber
Ini akan digunakan untuk www atau non-www. Jika Anda mencoba membuka tautan dengan www maka url redirect ke https dengan www
atau Jika Anda mencoba membuka tautan dengan non-www maka url redirect ke https dengan non-www
sumber
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
olehRewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [R=301,L]