URL Rewriting Di Apache HTTP Server


Seorang programmer PHP membuat file latihan.php di folder web-nya.  Untuk mengakses file tersebut, pengguna harus mengetikkan URL seperti http://www.domain.com/latihan.php. Dengan demikian, URL selalu berisi informasi yang dipetakan terhadap file fisik.  Hal ini tidak berlaku di JEE: user mengakses sebuah Servlet bukan berdasarkan nama class, tetapi berdasarkan nilai element urlPatterns di WebServlet annotation.

Seandainya programmer PHP tersebut membuat file post.php yang diakses seperti ini:

http://www.domain.com/post.php?tahun=2012&bulan=11&tanggal=01

Kemudian ia merasa bahwa URL tersebut terlalu panjang, alangkah sederhananya bila URL tersebut diakses seperti:

http://www.domain.com/2012/10/01

Apa yang harus ia lakukan tanpa membuat file baru?  Proses yang harus ia lakukan dikenal sebagai URL rewriting.  Bila ia memakai Apache HTTP Server, ia dapat menggunakan Apache mod_rewrite yang menyediakan fungsi tersebut.

Sebelum menggunakan Apache mod_rewrite, pastikan terlebih dahulu modul tersebut sudah di-load, dengan memeriksa isi file konfigurasi Apache.  Sebagai informasi, nama file konfigurasi Apache HTTP Server adalah httpd.conf (pada server Linux, biasanya terdapat di direktori /etc).  Pastikan baris berikut tidak di-comment (tidak diawali tanda #):

LoadModule rewrite_module modules/mod_rewrite.so

Bila si programmer tidak memiliki akses pada folder sensitif, ia dapat membuat sebuah file PHP dengan isi seperti berikut:

<?php
phpinfo();
?>

Setelah menjalankan PHP tersebut di-browser, sang programmer dapat memeriksa bagian apache2handler di baris Loaded Modules.  Bila terdapat tulisan mod_rewrite, maka ia dapat menggunakan fitur URL Rewriting dari Apache HTTP Server.

Langkah berikutnya yang harus dilakukan adalah menambahkan directive untuk keperluan mod_rewrite.  Hampir semua directive dapat diletakkan di file konfigurasi httpd.conf, akan tetapi bila si programmer tidak memiliki akses untuk mengubah httpd.conf, ia terpaksa harus meletakkannya pada file .htaccess. Ada beberapa directive yang tidak dapat diletakkan di .htaccess, misalnya RewriteLog dan RewriteLogLevel yang memungkinkan log yang berisi informasi mengenasi proses URL rewriting yang terjadi.

Selain itu, pastikan AllowOverride bernilai All pada directive Directory yang berisi lokasi direktori fisik.  Bila AllowOverride bernilai None, maka file .htaccess akan diabaikan oleh Apache HTTP Server.

Langkah terakhir, si programmer membuat file .htaccess di direktori utama, yang isinya seperti berikut ini:

RewriteEngine On
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})$ /post.php?tahun=$1&bulan=$2&tanggal=$3

Directive RewriteRule di atas mengandung dua bagian, yaitu bagian Pattern dan bagian Substitution.

Bagian Pattern berisi regular expression yang akan dicocokkan dengan URL yang diberikan oleh pengguna.  Pada regex, [0-9]{4}/ menunjukkan bahwa wajib terdapat empat digit angka (contoh pola yang memenuhi: 1994/, 2004/; contoh pola yang salah: abcd/, 19/).  Lalu [0-9]{2}/ menunjukkan bahwa wajib terdapat dua digit angka (contoh pola yang memenuhi: 10/, 11/, dan sebagainya).  Dengan demikian, secara keseluruhan, contoh nilai yang memenuhi regex di bagian Pattern ini adalah: 2011/11/01

Bagian Substitution berisi resources yang sesungguhnya akan diakses. Resources dapat berupa lokasi file ataupun URL lain.  Pada contoh, bila pola URL di pattern dipenuhi, maka yang akan diakses adalah /post.php.  Nilai $1 akan digantikan dengan nilai ekspresi dalam tanda kurung yang pertama kali dijumpai di bagian Pattern.  Begitu juga nilai $2 akan digantikan dengan nilai ekspresi dalam tanda kurung yang kedua, dan seterusnya.

Dengan demikian, bila user yang memasukkan URL:

http://www.domain.com/2011/11/30

maka halaman yang sesungguhnya diakses adalah:

http://www.domain.com/post.php?tahun=2011&bulan=11&tanggal=30

Perihal Solid Snake
I'm nothing...

3 Responses to URL Rewriting Di Apache HTTP Server

  1. ivanhalim mengatakan:

    ini yang saya cari-cari..thanks infonya pak…saya sedang mempelajari pemanfaatan file .htaccess…ada pembahasan lebih lanjut atau referensi untuk teknik dan strategi penggunaan file .htaccess dalam website pak?

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: