Monday, August 2, 2010

Aturan penulisan URL

Pada penjelasan mengenai controller, telah kita lihat sekilas bagaiman cara penulisan URL pada CodeIgniter, dan bagaimana cara mengakses controller, fungsi serta memasukkan parameter lain yang diperlukan. Pada bagian ini akan dibahas lebih lanjut mengenai seluk beluk aturan penulisan URL pada CodeIgniter.
URL pada CodeIgniter dirancang supaya lebih bagus dilihat dan dapat dengan mudah dikenali oleh search engine. Oleh karenanya daripada menggunakan sistem query string yang standar digunakan, CodeIgniter memilih menggunakan pendekatan segment based. Perbedaan dari kedua pendekatan di atas adalah sebagai berikut:

Contoh pendekatan query string standar:
www.contoh.com/index.php?id=12345
Contoh pendekatan segment based:
www.contoh.com/index.php/test/nilai/25

Segmen-segmen dalam URL dirancang dengan mengikuti kerangka pendekatan Model-View-Controller. Segmen-segmen ini merepresentasikan hal-hal sebagai berikut:
http://contoh.com/index.php/class/fungsi/ID   

Segment ke-1 merepresentasikan controller class yang harus dipanggil.
Segment ke-2 merepresentasikan fungsi yang ada pada controller class.
Segment ke-3 dan tambahan segmen lainnya apabila ada, merepresentasikan ID dan variabel-variabel lainnya yang akan dimasukkan ke dalam fungsi yang ada pada controller.

Secara default seperti pada contoh sebelumnya, index.php akan dimasukkan ke dalam URL. Kita bisa menghilangkan index.php ini dari tampilan dengan cara membuat file .htaccess yang dilengkapi dengan aturan yang memungkinkan tidak ditampilkannya index.php pada URL. Berikut contoh file .htaccess menggunakan metode negatif, dimana segala sesuatu dialihkan kecuali hal-hal yang disebutkan: 
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Pada contoh di atas, setiap HTTP request selain untuk index.php, images, dan robots.txt diperlakukan sebagai request untuk file index.php. Supaya file .htaccess di atas dapat dijalankan, sebelumnya kita harus mengaktifkan terlebih dahulu module RewriteEngine yang ada pada Apache. Pada WAMPServer, untuk mengaktifkan RewriteEngine ini sangat mudah, cukup dengan klik kanan pada ikon WAMPServer, seperti berikut ini:

Walaupun secara default URL pada CodeIgniter menggunakan pendekatan segment based, tetapi apabila kita lebih menginginkan penggunaan pendekatan query string, kita bisa mengaktifkan query string ini dengan merubah aturan pada konfigurasinya. Untuk merubahnya, buka file config.php yang terdapat pada folder application/config, ubah bagian 'enable_query_strings' menjadi 'TRUE' sehingga menjadi:

$config['enable_query_strings'] = TRUE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';

Apabila pendekatan query string ini diaktifkan, maka baik controller maupun fungsi dapat diakses dengan menggunakan 'trigger' yang telah kita tentukan sebelumnya. Contoh URL yang sebelumnya dibuat dengan pendekatan segment based, apabila ditulis dengan pendekatan query string akan menjadi sebagai berikut:
 www.contoh.com/index.php?c=test&m=nilai&id=25

No comments: