Microtrafh - Kali ini saya akan memberikan tutorial tentang bagaimana cara menghilaangkan index.php pada url website kita di CI. Sebenarnya cukup simple dan mudah karena ini juga dijelaskan di documentation codeigniter, namun pada documentation beberapa hal tidak work lagi di bebrbagai server. Maka dari itu saya akan menjelaskan alur menghilangkan index.php di CI.
Secara default url kita harus menggunakan index.php karena semua proses yang masuk harus melalui index.php , contohnya
http://localhost/blog/index.php/controller/function/
namun kita ingin agar index.php dihilangkan sehingga ingin menjadi seperti:
http://localhost/blog/controller/function/
Beberapa orang menginginkan menghilangkan index.php karena
- Ingin mempercantik url
- Tidak ingin orang lain tahu bahwa website kita dibangun oleh CodeIgniter
- Url menjadi terlalu panjang
Cara agar mengilangkannya adalah dengan membuat file .htaccess dan disimpan bersama dengan file index.php, setelah itu masukan script ini
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
setelah kamu simpan maka kamu dapat mengaksesnya tanpa index.php seperti
http://localhost/blog/controller/function
sampai disini kamu sudah selesai namun ada beberapa pengaturan pada codeigniter agar fungsi-fungsi yang berhubungan dengan index.php tidak error maka buka application/config/config.php , lalu cari
$config['index_page'] = 'index.php';
dan hilangkan index.php menjadi
$config['index_page'] = '';
kenapa harus dihilangkan?
karena ada beberapa fungsi bawaan codeigniter yang masih menggunakan config diatas. contohnya
jika kita mau memanggil file external seperti css atau js seperti ini:
http://localhost/blog/css/theme.css
kita biasa menggunakan
<?php echo base_url()."css/theme.css"?>
karena file tersebut bersifat tidak mengikat pada codeigniter, tapi berbeda jika itu sebuah link memanggil controller pada codeigniter, contohnya
http://localhost/blog/index.php/controller/function
maka kita akan menggunakan
<?php echo site_url()."controller/function";?>
dan kita tahu bahwa site_url() adalah gabungan dua string antara $config['base_url'] + $config['index_page'] ,jadi saat kamu tidak menghilangkan index.php pada saat kamu menggunakannya akan ada beberapa fungction seperti site_url() , redirect() dan form() yang tidak berjalan.
Update!!!!!Untuk beberapa alasan script .htaccess diatas tidak bisa digunakan karena ada settingan dari hosting/ webserver atau provider tertentu contohnya pada server hosting IDHostinger script diatas tidak work melainkan harus menggunakan script ini, mungkin dikarenakan mereka menggunakan webserver yang sudah diutak atik.
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# Rewrite URL to forward to a folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Semoga bermanfaat , Jangan lupa juga share ,like dan bookmark website kami karena masih banyak info dan tutorial menarik lainnya. Terimakasih.
Tag :
codeigniter,
tutorial