Pada postingan sebelumnya saya telah menjelaskan Tutorial CodeIgniter untuk pemula. Pada kali ini kita akan melihat cara menghapus index.php di CodeIgniter. Meskipun CodeIgniter menggunakan URL yang friendly untuk mesin pencari, pasti ada yang merasa sedikit janggal dengan adanya ‘index.php’ di antara url di CodeIgniter ini. Apakah kamu pernah bertanya-tanya bagaimana cara menghilangkannya untuk mendapatkan url yang lebih bersih dalam aplikasi CodeIgniter kamu?
Katakanlah CodeIgniter kamu memiliki url seperti ini: http://www.domain.com/index.php/kontak
dan kamu ingin terlihat seperti http://www.domain.com/kontak
. Ya, kamu dapat melakukannya. Dalam CodeIgniter, menghapus index.php dari url harus dilakukan dengan menulis ulang url dalam file .htaccess
.
Langkah 1: Aktifkan opsi mod_rewrite di Server APACHE kamu
Untuk menulis ulang (rewrite) url di file .htaccess
, opsi mod_rewrite
harus diaktifkan di server apache. Buka file apache “httpd.conf” dan cari baris berikut ini:
LoadModule rewrite_module modules/mod_rewrite.so
Jika kamu menggunakan XAMPP, lokasi file “httpd.conf” ada di direktori: xampp/apache/conf/httpd.conf
Jika baris di atas didahului dengan # (dalam hal ini, modul tersebut dinonaktifkan), kemudian hilangkan simbol # (hash) untuk memungkinkan url menulis ulang.
Atau dengan cari lain untuk memeriksa apakah mod_rewrite
sudah aktif. Dengan menggunakan fungsi php phpinfo()
. Silahkan buat file baru bernama info.php
atau terserah. Lalu tambah kode berikut:
<?php phpinfo(); ?>
Simpan file tersebut di root direktori website kamu, lalu buka di browser dengan mengetik http://www.domain.com/info.php
. Dan akan terlihat seperti ini:
Langkah 2: Buat file .htaccess
Berikutnya membuat file .htaccess
di direktori root CodeIgniter. Untuk membuat file .htaccess
, buka text editor favorit kamu dan membuat file teks baru. Simpan sebagai “.htaccess” (pastikan kamu mengetik nama file dalam tanda kutip untuk menghindari file yang akan disimpan sebagai file teks) di direktori root.
Sekarang copy paste kode ini ke file .htaccess
dan simpan.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteCond %{REQUEST_URI} !/system/.* [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] </IfModule>
Jika kamu menjalankan aplikasiCodeIgniter sebagai subdirektori, bukan root domain seperti, http://domain.com/codeigniter/
bukan http://domain.com/
maka kode di atas tidak akan bekerja. Kamu harus men-tweaknya sedikit untuk memberitahu bahwa situs kamu dijalankan sebagai subdirektori. Tambahkan kode ini ke file .htaccess
bukan yang di atas.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteCond %{REQUEST_URI} !/system/.* [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
Untuk server localhost (XAMPP atau yang lainnya), gunakan kode dibawah ini:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
Langkah 3: Mengubah pengaturan konfigurasi CodeIgniter
Buka file config.php
di direktori application/config/config.php
dan cari baris berikut:
$config['index_page'] = 'index.php';
Hapus index.php
dan menjadi seperti ini:
$config['index_page'] = '';
Sekarang restart Apache dan periksa url nya di browser apakah sudah berhasil.
Jika itu tidak berhasil, kamu mungkin akan mengalami masalah dengan protokol uri. Cari pengaturan $config['uri_protocol'] = 'AUTO';
di file konfigurasi lalu ganti dengan $config['uri_protocol'] = 'REQUEST_URI';
.
Restart server apache lagi dan periksa situs codeigniter kamu untuk melihat index.php yang telah dihapus dari url codeigniter.