Melanjutkan pembahasan Tips dan Trik URL Rewriting (bag. 1 dan 2), sesuai dengan janji saya, pada tulisan kali ini saya akan membicarakan tentang penggunaan file .htaccess untuk Redirecting dan Rewriting. Kita akan mengupas habis kemampuan mod_rewrite dalam URL Rewriting.
Modul mod_rewrite adalah salah satu modul terdahsyat yang dimiliki oleh Apache. Dengan modul ini, kita bisa memanipulasi URL sesuai keperluan, misalnya mengubah struktur URL yang terlalu panjang menjadi lebih pendek, membuat URL yang disukai oleh search engine, merestrukturisasi URL dinamis menjadi flat link, mencegah hot-linking, dan sebagainya.
Simple Rewriting
Topik tentang mod_rewrite ini cakupannya sangat luas, nggak akan cukup kalau hanya kita bahas dalam satu tulisan saja. Sebagai permulaan, pada bagian ketiga ini saya akan membahas beberapa teknik sederhana untuk melakukan URL Rewriting dengan mod_rewrite.
Berikut ini contoh paling sederhana dari URL Rewriting:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)\.html$ $1.php [NC]
</IfModule>
Untuk mempraktekkannya kita buat sebuah direktori dengan nama latihan pada DOCUMENT_ROOT. Berikutnya buat file teks pada direktori tersebut menggunakan Notepad dengan isi seperti kode di atas, kemudian simpan dengan nama “.htaccess“. Ingat jika kita memakai Notepad berikan tanda kutip pada nama file tersebut agar tidak disimpan dengan format TXT.
Selanjutnya buat file baru (dengan Notepad juga boleh) dengan nama percobaan.php. Isinya bebas, contohnya sebagai berikut:
<?php echo 'Halo, ini contoh sederhana dari URL Rewriting' ?>
Buka web browser dan ketikkan alamat URL berikut ini:
http://localhost/latihan/percobaan.html
Bagaimana hasilnya? Kalau di web browser muncul teks “Halo, ini contoh sederhana dari URL Rewriting”, itu berarti latihan pertama kita sukses. Pertanyaannya sekarang, mengapa ini bisa terjadi? Padahal kita tahu URL yang kita ketikkan tadi adalah percobaan.html, tapi kok yang muncul isi dari file percobaan.php.
Anda tahu apa sebabnya? Itu semua bisa terjadi karena perbuatan modul mod_rewrite. Normalnya, jika kita mengetikkan alamat URL http://localhost/latihan/percobaan.html maka akan muncul error 404 karena halaman web tersebut tidak ada. Tapi berkat mod_rewrite, kita diarahkan menuju file percobaan.php. Kalau tidak percaya silahkan hapus file .htaccess pada direktori latihan tersebut.
Aturan yang kita tuliskan pada file .htaccess tersebut di atas juga berlaku untuk alamat URL yang lain. Jadi kalau mengakses URL http://localhost/latihan/kontak.html maka kita akan diarahkan menuju file kontak.php. Tanda [NC] pada file .htaccess tersebut maksudnya yaitu No Case atau case-insensitive alias tidak membedakan pemakaian huruf besar maupun kecil pada alamat URL.
Oke, sekarang saya kasih contoh lain yang lebih sulit lagi. Kali ini saya akan menggunakan regular expression agar yang mempraktekkannya sedikit mikir
hehehe… Berikut ini aturannya pada file .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^album/([0-9]+)/([0-9]+) index.php?year=$1&month=$2 [NC]
</IfModule>
Bagaimana, bisa menebak apa yang terjadi dengan peraturan seperti diatas? Oke, akan saya beritahu. Dengan aturan seperti diatas jika kita mengetikkan alamat URL seperti di bawah ini:
http://localhost/latihan/album/2009/12
maka oleh mod_rewrite secara otomatis akan diterjemahkan menjadi seperti ini:
http://localhost/latihan/index.php?year=2009&month=12
Selanjutnya kita tinggal mengutak-atik file index.php untuk memberikan tampilan halaman web yang diminta. Misalnya saja isi dari file index.php adalah sebagai berikut:
<?php
switch ($_GET['month'])
{
case 01:
$month = 'Januari';
break;
case 02:
$month = 'Februari';
break;
default:
$month = 'Bulan lainnya';
break;
}
?>
<html>
<head>
<title>Latihan URL Rewriting</title>
</head>
<body>
<?php echo 'Anda meminta album tahun ' . $_GET['year'] . ' bulan ' . $month ?>
</body>
</html>
(bersambung)

