mod_rewrite adalah modul dari server web Apache yang memungkinkan memanipulasi (mengubah) URL yang diminta oleh klien sebelum permintaan tersebut benar-benar diproses oleh
server. Modul ini dapat dikonfigurasi baik melalui file konfigurasi virtual host ataupun melalui file .htaccess
Dengan menggunakan mod_rewrite, Anda dapat membuat aturan-aturan kompleks untuk keperluan seperti
- Search Engine Optimization (SEO): Memastikan URL ramah SEO untuk meningkatkan peringkat pencarian.
- Simplified Navigation: Membuat URL yang lebih pendek dan mudah diingat untuk meningkatkan pengalaman klien.
- Security: Menyembunyikan struktur direktori dan file asli untuk mengurangi risiko keamanan.
How URL Rewriting works
Sytax untuk aturan RewriteRule.
RewriteRule pattern substitution [flags]
- Pattern: Ini adalah ekspresi regular yang cocok dengan URL yang ingin ditulis ulang.
- Substitution: Ini adalah URL yang ingin Anda alihkan.
- Flags: parameter opsional yang digunakan untuk mengubah fungsionalitas aturan.
Contoh.
RewriteEngine on
RewriteRule ^about.html$ aboutus.html [NC]
Aturan tersebut akan mengarahkan klien yang mengakses halaman about.html
ke aboutus.html
dengan tambahan flags [NC] agar berlaku huruf besar dan kecil (case-insensitive).
More Complex Examples
Misalkan Anda memiliki situs dinamis dimana profil pengguna diakses melalui URL www.example.com/profile.php?user=username
dan Anda dapat mengubahnya menjadi
www.example.com/username
agar lebih ramah pengguna dengan menerapkan aturan berikut.
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?user=$1
Rewriting URLs for Pagination
Katakanlah Anda memiliki blog yang menampilkan postingan dengan URL seperti www.example.com/blog?page=2
. Anda dapat membuatnya lebih mudah dibaca dan ramah SEO dengan
mengubahnya menjadi www.example.com/blog/page/2
.
RewriteEngine on
RewriteRule ^blog/page/([0-9]+)$ blog.php?page=$1
Removing File Extensions
Untuk menghapus ekstensi .php
dari URL agar terlihat lebih bersih.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Ini akan membuat URL seperti www.example.com/about.php
menjadi dapat diakses dengan www.example.com/about
Preventing Image Hotlinking
Hotlinking adalah praktik dimana suatu situs web dapat menggunakan resource seperti gambar langsung di situs yang Anda miliki. Sehingga hal ini dapat menghabiskan bandwidth dan memperlambat situs. Anda bisa mencegah dengan menggunakan aturan berikut.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
Backreferencing
Jika Anda memiliki situs seperti toko online yang menampilkan produk dengan URL seperti http://example.com/request.php?id=foo&name=bar
. Anda dapat mengubahnya menjadi
http://example.com/product/foo/bar
agar lebih mudah dibaca dengan aturan berikut.
RewriteEngine On
RewriteRule ^product/([A-Za-z]+)/([A-Za-z]+)$ request.php?id=$1&name=$2
Aturan tersebut mengambil pola dari tanda kurung dan menyimpannya dalam variabel referensi $1
dan $2
Referensi: