Untuk memaksakan HTTPS terlebih dahulu, Anda harus memeriksa variabel lingkungan yang benar %{HTTPS} off
, tetapi aturan Anda di atas kemudian menambahkan. www.
Karena Anda memiliki aturan kedua yang harus ditegakkan www.
, jangan menggunakannya dalam aturan pertama.
RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Tentang proksi
Ketika di belakang beberapa bentuk proxy, di mana klien terhubung melalui HTTPS ke proxy, load balancer, aplikasi Penumpang, dll., %{HTTPS}
Variabel mungkin tidak akan pernah terjadi on
dan menyebabkan loop penulisan ulang. Ini karena aplikasi Anda benar-benar menerima lalu lintas HTTP biasa meskipun klien dan penyeimbang proxy / beban menggunakan HTTPS. Dalam kasus ini, periksa X-Forwarded-Proto
tajuk alih-alih %{HTTPS}
variabel. Jawaban ini menunjukkan proses yang sesuai
RewriteCond %{HTTPS} =off