Secara default CodeIgniter menggunakan url dengan skema segment-based, namun terdapat sedikit hal yang cukup mengganggu yaitu index page yang ikut disertakan, biasanya index.php
. Dengan sebuah konfigurasi pada htaccess maka index page tersebut dapat dihilangkan.
Sekarang kita coba menghapus index page berupa index.php yang disertakan
example.com/index.php/class/function/ID
dengan menggunakan htaccess file menjadi
example.com/class/function/ID
Berikut adalah contoh konfigurasi htaccess yang dapat digunakan pada web server Apache. Buat sebuah file .htaccess
pada document root project.
RewriteEngine On
RewriteBase /
#'system' adalah nama folder system yang terdapat di dalam framework
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#'application' adalah nama folder application yang terdapat di dalam framework
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
ErrorDocument 404 /index.php
Perhatikan pada RewriteBase /
, artinya web anda berada pada root misal example.com
. Jika web anda berapa pada sub-folder misal example.com/web/
maka ganti menjadi RewriteBase /web/
.
Terakhir jangan lupa hapus value index page yang terdapat pada konfigurasi CodeIgniter application/config/config.php
$config['index_page'] = 'index.php';
menjadi
$config['index_page'] = '';
gan mau nanya..
kan di controller ane ada folder home terus di dalem nya da file template, nah di file routes nya tuh ane pengen nya $route[‘default_controller’] = “template”; gmna caranya ya gan?
klu $route[‘default_controller’] = “home/template”; bisa gan..
mohon pencerahannya gan
kalo $route[‘default_controller’] = “templateâ€; maka akan merefer ke application/controllers/template.php