Redirect 301 HTTP ke HTTPS kalau menggunakan blog yang ada di blogger.com mudah saja :) karena urusannya akan dilakukan otomatis oleh blogger.com seperti yang pernah saya ulas di Kupas Tuntas SSL / HTTPS Blog Custom Domain di Blogger.com beberapa waktu lalu. Namun jika menggunakan hosting, VPS, atau Dedicated Server maka harus ngatur sendiri. Karena kodenya sulit diingat maka saya catat disini, siapa tahu ada yang butuh juga.
HTTP ke HTTPS Paling Sederhana
Ini bagus digunakan jika menggunakan subdomain selain www, karena simple saja kodenya, semua request ke URL apapun yang menggunakan HTTP akan langsung diarahkan ke HTTPS. Misalnya dari http://subdomain.domain.tld/
ke https://subdomain.domain.tld/
.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
HTTP ke HTTPS Untuk Domain Utama
Yang dimaksud domain utama adalah subdomain www, atau tanpa www yang biasa disebut naked domain.
Naked Domain
Kasusnya seperti berikut ini:
http://domain.tld/
→https://domain.tld/
http://www.domain.tld/
→https://domain.tld/
https://www.domain.tld/
→https://domain.tld/
Maka .htaccess yang bisa digunakan adalah:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
Kode diatas bisa disingkat (dikurangi 1 baris kode), namun harus menuliskan nama domainnya seperti berikut ini:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://domain.tld%{REQUEST_URI} [R=301,L,NE]
</IfModule>
Domain Dengan www
Kasusnya seperti berikut ini:
http://domain.tld/
→https://www.domain.tld/
http://www.domain.tld/
→https://www.domain.tld/
https://domain.tld/
→https://www.domain.tld/
Gunakan .htaccess seperti berikut ini:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^ https://www.%1%{RERUEST_URI} [NE,L,R=301]
</IfModule>
Atau menyebutkan domainnya:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.domain.tld/$1 [R=301,L]
</IfModule>
Perlu Dipahami
Perlu dipahami bahwa file .htaccess bisa berisi banyak pengaturan, diatas itu hanyalah mengatur redirect HTTP ke HTTPS, jika ada pengaturan lain maka bisa ditambahkan dan perhatikan kode dibawah ini:
<IfModule mod_rewrite.c>
RewriteEngine On
...
...
...
...
# ini comment / catatan
...
...
</IfModule>
Kode diatas itu hanya perlu sekali dituliskan, lainnya ada di kode titik-titik ...
itu. Jadi tidak perlu mengulang-ulang menuliskan RewriteEngine On
dan ifModule
itu.
Kalau mau menambahkan catatan agar tidak lupa tuliskan dengan mendahului karakter #
, dan satu baris itu harus comment semua tidak boleh ditulis di akhir kode dalam satu baris, jadi tidak sama dengan javascript atau PHP.
Semoga bermanfaat.