Dengan Apache mod rewrite, kita dapat menghilangkan 'index.php' dari URL kita. Hilang disini hanya bersifat abstrak, artinya file index.php dalam root aplikasi tetap diperlukan. Oke, langsung saja, saya akan berikan langkah-langkah praktisnya.
Langkah 1
Buka text editor kesukaan Anda, copy paste kode berikut.Ganti baris kedua dengan nama folder tempat menyimpan aplikasi CI JIKA Anda menyimpan aplikasi CI TIDAK di root server. Misal aplikasi Anda beralamat http://example.com/myblog maka baris kedua menjadi RewriteBase /myblog.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
Simpan file ini dengan nama .htaccess dan tempatkan di root aplikasi, tempat index.php berada.
Langkah 2
Buka system/application/config.php dan ubahlah barisdengan
$config['index_page'] = "index.php";
Oke. Tes aplikasi Anda, coba beberapa URL untuk memastikan apakah berhasil atau tidak (mungkin Anda perlu menunggu/mencoba beberapa kali, terkadang respon server lambat). Jika belum berhasil, coba modifikasi (masih file config.php) baris
$config['index_page'] = "";
dengan
$config['uri_protocol'] = "AUTO";
Coba lagi URL Anda, pastikan semua bekerja dengan baik. Mungkin ada beberapa URL yang tidak bekerja. Jika ini terjadi, modifikasi (masih file config.php) baris
$config['uri_protocol'] = "REQUEST_URI";
dengan
$config['rewrite_short_tags'] = FALSE;
Oke. Kita sudah selesai. Selanjutnya, kita akan bahas teknik uri routing di CodeIgniter.
$config['rewrite_short_tags'] = TRUE;
Pada prinsipnya, teknik URI routing adalah mendefinisikan arah lari URL ke tempat yang kita mau. Contoh sederhana, misalkan kita ingin agar URL http://example.com/about menuju controller utama dan method aboutme, maka kita tambahkan array dalam file system/application/routes.php
Jika kita ingin passing parameter segmen, gunakan wildcards. Misal kita ingin agar URL http://example.com/view/123 menuju ke controller artikel dan method detail serta memberikan parameter '123' ke method , kita tambahkan di routes.php
$route['about'] = "utama/aboutme"; // format : $route['url_sebenarnya'] = "arah_controller/fungsi";
Jika Anda menggunakan parameter non angka, ganti :num dengan :any. PERHATIAN : route setting diatas berlaku 'tepat satu', artinya, misal kita coba alamat http://example.com/view/123/456, maka kita akan mendapatkan halaman 'not found'. Untuk kasus ini, kita perlu menambahkan segmen ketiga,
$route['view/(:num)'] = "artikel/detail/$1";
Tanda dolar diikuti angka menunjukkan urutan dari kiri, artinya, (:num) pertama masuk ke segmen ke-3 dan (:num) kedua masuk segmen ke-4. Meskipun demikian, untuk menangkap parameter segmen, kita tetap membaca urutan berdasar key setting route (view/(:num)/(:num)), jadi, parameter pertama dibaca dengan $this->uri->segment(2) dan parameter kedua dengan $this->uri->segment(3).
$route['view/(:num)/(:num)'] = "artikel/detail/$1/$2";
OK, kita selesai. Dengan beberapa teknik sederhana diatas, kita akan mendapatkan URL yang lebih cantik dan elegan. Jika menemui kesulitan, feel free to comment, OK?
Referensi : PC TIPS.NET, CI User Guide.