CodeIgniter : Rewrite Rule dengan htaccess

Standard

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'] = '';

2 thoughts on “CodeIgniter : Rewrite Rule dengan htaccess

  1. feri

    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

Leave a Reply