htaccess, mod_rewrite dan permalink

htaccess adalah file konfigurasi untuk mengontrol web server apache, mod_rewrite adalah rewrite engine yang di gunakan oleh web server untuk modifikasi alamat web (url) sebelum diakses. sedangkan permalink adalah alamat web alias untuk mengakses alamat web yang panjang atau rumit.

Kadang, sebagian dari anda pernah menjumpai alamat web http://alamat.web/login.php?user=me atau http://alamat.web/login/me.php yang kita tidak tahu variabel apa yang dikirim, dan kedua alamat tersebut sebernarnya mengarah pada satu file yang sama.

Hal pertama yang perlu di cek adalah web server apache yang anda gunakan apakah sudah mendukung htaccess dan mod_rewrite. buka file /usr/local/apache2/conf/httpd.conf atau /etc/httpd/conf/http.conf tergantung OS yang digunakan, contoh diatas adalah FreeBSD dan Fedora.

vi /usr/local/apache2/conf/httpd.conf

cari baris #Load Module rewrite_module modules/mod_rewrite.so hilangkan tanda # sehingga menjadi Load Module rewrite_module modules/mod_rewrite.so

kemudian cari baris AccessFileName .htaccess dan AllowOveride None, None di ubah menjadi All sehingga menjadi AllowOveride All. Resrtart apache

/usr/local/etc/rc.d/apache.sh restart

Sekarang buat file .htaccess di root directory web

vi .htaccess

Masukkan kode berikut

#mengaktifkan mod_rewrite
RewriteEngine on
#make dinamik rewrite
RewriteRule ^login/([^/]+)/([^/]+).html /login.php?action=$1&user=$2 [NC]

Simpan dan keluar

tanda ([^/]+) adalah regular expression(regex),  apache akan merubah regex menjadi variable dalam hal ini $1, karena regexnya ada 2 maka variabel yang di tangkap juga ada 2, yaitu $1 dan $2. Sehingga dengan menggunakan htaccess dan mod_rewrite diatas alamat web dari

http://myweb/login.php?action=baca&user=wa2n

akan menjadi

http://myweb/login/baca/wa2n

selamat mencoba

~wa2n