Tutorial Menghilangkan index.php di CodeIgniter

Tutorial Menghilangkan index.php di CodeIgniter
 
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.
Back To Top