Belajar Membuat Clean URL dengan .htaccess

Setelah kemarin kita belajar membuat blog dengan PHP dan MySQL sekarang kita akan membahas tentang clean URL. Biasanya clean url ini ada yang menyebutnya sebagai semantic URL atau url rewriting. Ketiga hal tersebut bisa dibilang memiliki tujuan yang sama yaitu membuat url lebih mudah untuk dibaca (readable url).

Sebagai contoh pada tulisan membuat blog dengan PHP dan MySQl yang lalu, kita memiliki format url untuk membaca detail tulisan sebagai berikut ini:

?type=view&id=2

dari format seperti url diatas, kita akan merubahnya menjadi seperti ini

/view/2

formatnya akan kita buat lebih sederhana dan lebih mudah untuk dibaca, clean url ini juga bisa kita temukan di banyak website pada sekarang ini. Karena dengan mengimplementasi clean url ini website kita jadi lebih ramah buat mesin pencari (search engine).

Implementasi clean URL

Silahkan kalian download source dari tulisan sebelumnya mengenai membuat blog dengan PHP dan MySQL (pada bagian bawah tulisan ada link download source code). Letakan kedalam folder web server root kemudian dalam folder “cleanurl”, lalu kita akan memodifikasi beberapa filenya.

edit file config.php
Pada file config.php kita harus menambahkan variabel $base_url yang berguna untuk ditambahkan pada link “kembali” pada halaman detail tulisan, silahkan tambahkan kode berikut ini sebelum baris “mysql_connect”.

$base_url	= 'http://localhost/cleanurl/;

kode diatas menjelaskan kita telah mendeklarasikan variabel $base_url, dengan ketentuan isi yang ada di dalam variabel $base_url haruslah folder dimana kita meletakan source code yang telah kita download sebelumnya. Pada tulisan ini saya meletakan dalam folder “cleanurl” pada root direktori web server saya.

edit file index.php
Pada file index.php kita akan merubah bagian yang mengatur tentang link yang akan diakses ketika kita mengklik salah satu tulisan yang ada di daftar tulisan. Silahkan kalian cari kode dibawah ini pada file index.php.

<a href="?type=view&id='.$row->post_id.'"><h1>'.$row->title.'</h1></a>

kalian bisa rubah potongan kode tersebut menjadi seperti ini

<a href="'.$base_url.'view/'.$row->post_id.'"><h1>'.$row->title.'</h1></a>

buat file baru .htaccess
Silahkan kalian buat file .htaccess didalam folder “cleanurl”, kemudian silahkan isi dengan kode berikut ini

RewriteEngine On
RewriteCond $1 !^(index\.php)
RewriteRule ^view/([^/\.]+)/?$ index.php?type=view&id=$1 [L]

Pada baris pertama menjelaskan bahwa kita akan mengaktifkan rewrite module pada web server (dalam hal ini adalah apache). Sedangkan pada baris kedua adalah memberikan izin file atau direktori mana yang bisa diakses oleh http request (dalam hal ini saya hanya mengizinkan untuk mengakses pada file index.php). Untuk baris terakhir merupakan sintaks regular expression, penjelasan sederhananya seperti ini.

jika http request melakukan request ke url “view/2” maka silahkan redirect ke url “index.php?type=view&id=2”, atau buka halaman detail tulisan dengan id “2”.

Setelah mengedit beberapa file tadi silahkan kalian buka di browser dan arahkan kepada http://localhost/cleanurl/, jika tidak terjadi kesalahan akan akan melihat clean url ini bekerja.

catatan: anda harus mengaktifkan mod_rewrite di web server anda untuk dapat mengimplementasi hal ini.