WordPress dilengkapi dengan fitur clean-url, untuk mempermudah pengenalan sebuah alamat post atau halaman di website tersebut. Hal ini juga akan mempermudah sebuah website untuk bisa dikenali search engine, seperti google ataupun yahoo. Clean URL, pada web server Apache, bekerja dengan menggunakan module mod_rewrite. Untuk itu, tentu saja jika anda ingin menggunkan fitur Clean URL ini, maka pastikan web server anda memiliki module mod_rewrite atau yang ekuivalen pada web server anda.
Jadi apa itu clean URL ? Adalah sebuah fitur pada web server yang dapat mengenali sebuah request HTTP dan kemudian menterjemahkannya menjadi sesuai yang dibutuhkan oleh CGI engine di website tersebut. Misalnya, sebuah URL murni tanpa menggunakan fitur clean URL adalah sebagai berikut
http://www.kurungkurawal.com/?p=123
maka, versi clean-url nya bisa saja menjadi (contoh diambil dari fitur wordpress)
http://www.kurungkurawal.com/2011/02/27/sample-post/
atau
http://www.kurungkurawal.com/2011/02/sample-post/
Dengan semua URL yang berbeda tersebut, namun engine wordpress dapat mengerti akan request HTTP tersebut dan memberikan output yang benar. Lalu bagaimana cara kerjanya?
Sebuah URL, misalnya http://www.contoh.com/direktori/halaman.php
, terdiri dari struktur yang sudah dimengerti oleh web server nya. Dimana pada contoh ini, Web Browser meminta isi dari halaman.php
pada folder direktori
pada sebuah komputer yang memiliki ip sama dengan yang diberikan DNS server untuk domain www.contoh.com
. Dan permintaan tersebut diminta dengan protokol HTTP (Hyper Text Transfer Protocol).
Web server yang dihubungi kemudian memproses halaman tersebut dan memberikan outputnya kepada browser. Selesai. Lalu, clean URL ?
Bayangkan, misalnya file /index.php
, kemudian contoh kodingnya adalah
1 | <!--?php $req = $_GET['q']; switch($req) { case "a": echo "ini halaman depan"; break; case "b": echo "halaman ini berisi ringkasan"; break; case "c": echo "blablabla......."; break; default: echo "permintaan tidak dimengerti."; break; } ?--> |
pada contoh script sederhana ini, satu halaman index.php bisa memberikan 4 macam output yang berbeda, sesuai dengan parameter dari GET (query string) yang diberikan, yaitu
/index.php?q=a
/index.php?q=b
/index.php?q=c
/index.php?q=abcde
url pertama, kedua dan ketiga akan dimengerti, tapi yang keempat atau lainnya, akan mendapat response yang sama, tidak dimengerti. Jadi apa maksudnya ini ? kenapa tidak buat saja 3 file yang berbeda kemudian diminta secara terpisah. Itu sih tergantung programmernya. Tapi tentunya, tidak semua halaman dalam sebuah website itu berbeda. Misalnya, pada wordpress, seluruh halaman itu kan sama saja, tergantung post yang diminta. Untuk logo, menu, footer, dan elemen lainnya, toh sama saja disemua halaman. Jadi, untuk apa membuat berbagai file terpisah hanya untuk membedakan isinya saja.
Oke, sekarang contoh url untuk index.php ini akan kita ubah. Sebelumnya, harap diingat bahwa web server anda harus sudah mengenali index.php sebagai file directoryIndex, artinya jika meminta sebuah directory tanpa nama file, maka file yang diberikan adalah index.php.
Sekarang, kita akan menambahkan konfigurasi untuk web server (contoh menggunakan Apache), melalui file .htaccess, isinya adalah:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
artinya apa itu,secara singkat, jika yang diminta itu BUKAN file dan BUKAN folder, maka tulis ulang sebagai parameter dari index.php. Maka dengan syntax seperti ini, dan mod_rewrite apache aktif, url /index.php/a
akan diubah menjadi /index.php?q=a
dan hal ini menjadikan url tersebut valid dan dapat dimengerti server.
Pad wordpress, hal ini dapat diaktifkan ataupun dinonaktifkan pada menu settings > permalinks, jangan lupa, wordpress harus mendapat permission untuk dapat menulis file pada folder web anda. Selamat mencoba.