Langsung ke konten utama
loading

Redirect 301 HTTP ke HTTPS Seluruh URL via .htaccess

htaccess

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/. htaccess

<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.

Komentar 0  Recent Comments