Sedikit catatan mengenai pengalaman pribadi untuk beberapa kegunaan .htaccess
pada hosting Apache.
Redirect
Sebelum dapat melakukan redirect dengan .htaccess
, kita perlu mengaktifkan RewriteEngine
, sebagai berikut:
RewriteEngine On
Dari http ke https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Dari www ke non www
Contoh dengan penulisan nama domain:
RewriteCond %{HTTP_HOST} ^www.ahonerd.com [NC]
RewriteRule ^(.*)$ https://ahonerd.com/$1 [L,R=301]
Contoh tanpa menuliskan nama domain:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
Dari semua subdirectory ke /index.php
:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond $1 !^index\.php
RewriteRule ^(.+)$ /index.php [L]
Clean URL
Maksudnya untuk menjadikan URL lebih bersih dari symbol-symbol seperti ?
dan atau &
.
.htaccess
Penjelasan code di atas:
- Group pertama maksudnya untuk menampilkan website dalam beberapa bahasa, untuk contoh di atas kita sudah men-cover 3 bahasa, yaitu
en
,jp
dan bahasa default. - Group ke-2 maksudnya untuk mengkonversi metode http get, pada contoh di atas adalah
page
dansub
, dari format semula seperti:/index.php?page=blog&sub=post
sehingga URL yang terlihat menjadi:/blog/post
, dan dari/index.php?page=blog
menjadi:/blog
. Karena kita perlu men-cover 3 bahasa, maka setiap bahasa harus diulang.
Gzip Compression
Dengan menerapkan feature ini, akan memperkecil ukuran file yang perlu diberikan dari server ke browser. Dengan memperkecil ukuran file, tentunya akan mempercepat proses loading (transfer) file yang dibutuhkan oleh browser untuk dapat menampilkan design website yang telah kita buat.
.htaccess
Feature Gzip tidak dapat menerapkan kompresi pada file yang sudah dikompres (compressed format), seperti
png
,zip
dll.
Pada server Apache, (saya pribadi menggunakan metode ini) bisa juga menggunakan metode berikut:
.htaccess
Apabila metode diatas tidak bekerja, bisa coba metode berikut:
.htaccess
Untuk memastikan apakah kompresi yang kita lakukan berhasil atau tidak, bisa diperiksa pada link ini atau ini.