Teknik Mempercantik URL di CodeIgniter
URL(Uniform Resource Locator) di CodeIgniter didesain dengan tipe segmentasi, berbeda dengan URL ‘query string’ standar. Tentunya, ini sangat menguntungkan, karena lebih user friendly dan juga disukai search engine. Secara default, jika kita membuat aplikasi CodeIgniter, URL kita akan mengandung ‘index.php’, ‘controller’, ‘method’, dan parameter-parameter tambahan. URL Helper dan URI Class telah disediakan untuk memudahkan kita dalam bekerja dengan URL. Dengan sedikit manipulasi tambahan, yakni dengan apache mod rewrite dan uri routing feature, kita dapat lebih mempercantik URL kita.
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.
<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>
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.
Simpan file ini dengan nama .htaccess dan tempatkan di root aplikasi, tempat index.php berada.
Langkah 2
Buka system/application/config.php dan ubahlah baris
$config['index_page'] = "index.php";
dengan
$config['index_page'] = "";
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['uri_protocol'] = "AUTO";
dengan
$config['uri_protocol'] = "REQUEST_URI";
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['rewrite_short_tags'] = FALSE;
dengan
$config['rewrite_short_tags'] = TRUE;
Oke. Kita sudah selesai. Selanjutnya, kita akan bahas teknik uri routing di CodeIgniter.
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
$route['about'] = "utama/aboutme"; // format : $route['url_sebenarnya'] = "arah_controller/fungsi";
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['view/(:num)'] = "artikel/detail/$1";
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)/(:num)'] = "artikel/detail/$1/$2";
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).
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.
Related posts:
- Membuat Website dengan CodeIgniter #1
- Simple Tutorial CodeIgniter Episode 1
- Membuat Website dengan CodeIgniter #3
- Simple Tutorial CodeIgniter Episode 2
- Redirect dengan Delay Time di CodeIgniter
12 Comments
Leave a comment
Recent Posts
Recent Comments
- LUKISAN MODERN on Sharing Script CI 1.7.2 untuk Sistem Informasi
- Wawan on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- chandra on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- nophil on Sistem Presensi dan Billing Sekolah
- yazid on Membuat Combobox Dinamis dengan CI dan Ajax
- faqih on Sharing Script CI 1.7.2 untuk Sistem Informasi
- rangga on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- reeyz on Membuat Website dengan CodeIgniter #1
- Rubby on Membuat Website dengan CodeIgniter #4
- Anggie on Membuat Website dengan CodeIgniter #1
- reeyz on Membuat Website dengan CodeIgniter #1
- Fajar on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- newbie2 on Ajax File Upload (CodeIgniter dan JQuery)
- newbie on Ajax File Upload (CodeIgniter dan JQuery)
- ardy on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Tips Trik Blogging on Simple Tutorial CodeIgniter Episode 3
- Anggie on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Manz on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Manz on Membuat Combobox Dinamis dengan CI dan Ajax
- anggie on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL



saya udah ikutin semua petunjuknya tapi tetep ga bisa yah,, selalu muncul
“Internal Server Error – The server encountered an internal error or misconfiguration and was unable to complete your request. bla bla bla…”
mohon petunjuknya boss ^:)^
akhirnya setelah mengembara kemana-mana,, ternyata yang salah ada di httpd.conf di apache saya,,
fiuh,, skr udah jalan boss^^
ini nih masalahnya, kali aja yang lain juga punya masalah dengan 500 internal server error yang akan muncul pesan di error log dengan pesan “RewriteEngine not allowed here”
tadinya di file httpd.conf :
wah…hebat…semoga jadi referensi buat yang lain.
heuhue….
gitu aja ko repot, sama kemarin jg saya kerepotan tuh…
thanx for solutions…..
Very nice Blog, I will tell my friends about it.
Thanks
om, saya bingung nih, dapet tugas pake $this->uri->uri_to_assoc(n), nah ntu gimana pakenya, saya masih kebingungan, maklum saya newbie., thanks bgt atas bantuannya.,
oia boleh minta contoh script penggunaannya?.,
skali lagi thanks bgt.,
Emm…itu untuk memecah URI ke dalam bentuk array asosiatif…
n itu offsetnya…jadi mulai dari BAGIAN KE-n dari URI, akan diterjemahkan sebagai array.
Misalkan
URL di atas memiliki URI :
segmen 1 => mahasiswa
segmen 2 => cari, dst
Klo kita ambil dg :
maka akan terambil MULAI DARI segmen 3 yaitu NIM dan 4150405013. jika kita print_r maka akan tampak bahwa array berisi satu value
semoga membantu.
mas saya pembaca setia artikel anda, ehhehe
mas ada yg pegn saya tanyakan
1. pada saat paging, index.php nya kok masih ada ya
2. bagaimana saya untuk memberikan .html ? padahal saya sudah me set urlsuffix .html ??
maksih mas di tunggu jawabannya
@eky : makasih ^_^
Nah, di config ‘base_url’ tu kan ada settingnya, nah, sesuaikan aja sm URL yang udah di-rewrite. Begitu maksud mas?
Bagaimana cara mngambil array dlam sebuah uri
misalnya aq buat http:\\localhost\tes\array
gimana cara mecah array nya biar bisa q tampung di controller
mas anggi
gimana ya mempercantik url di codeigniter, seperti sistem permalink
jadi url http://localhost/blog/view/1 dirubah jadi judul artikel http://localhost/blog/view/ini-adalah-judul
searching di google belum ada tutorial yang saya mengerti. mungkin bisa ngebantu?
@andi : klo yang saya tau, “ini-adalah-judul” itu diciptakan ketika anda menyimpan artikel, digenerate “unik” untuk setiap jdul artikel. Stelah itu konsepnya sama aja mas..
Tapi saya pribadi lebih suka query pake “id” (integer) karena saya kira lebih cpat daripada query dengan permalink (text/string)
coba baca http://stackoverflow.com/questions/6448603/url-routing-in-codeigniter-like-wordpress-clean-url dan ini http://codeigniter.com/forums/viewthread/82004/#412604