CodeIgniter Talk : Mod Rewrite

CodeIgniter secara default akan meletakan index.php pada url website sebelum nama controller dan fungsinya. Index.php berperan sangat penting pada CodeIgniter karena ini merupakan front controller bagi framework CodeIgniter. Kita tidak dapat menghilangkan ini namun kita masih bisa mengambil index.php dari url aplikasi kita. Tentunya hal ini adalah suatu yang wajib bagi mereka yang menyukai simplisitas pada url website mereka.

Tutorial Details

  • Program : Codeigniter v2.1.0
  • Topic : Mod Rewrite
  • Difficulty : Intermediate to Insane
  • Estimated Completion Time : About 20 minutes

Assumptions

  • Anda sudah memahami cara kerja framework CodeIgniter.
  • Anda sudah mengerti bagaimana URL terbentuk dalam framework CodeIgniter.
  • Anda tidak suka dengan keberadaan index.php pada URL website anda. 🙂

Step 1 Adding .htaccess file

Untuk mengontrol url pada website kita, kita dapat menggunakan .htaccess file ini. Sekarang buatlah file ini di root folder aplikasi web anda. Setelah itu isikan dengan script dibawah ini,

<IfModule mod_rewrite.c>
    # Submitted by: Fabdrol

    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

Ada beberapa setting yang perlu diperhatikan.

  1. Jika instalasi aplikasi web anda tidak pada server root anda harus mengubah “RewriteBase /” menjadi “RewriteBase /appFolder/”. Hal ini juga berlaku bagi anda yang menginstal web anda pada server local, e.g, Apache di Xampp. Maka “appFolder” harus diganti dengan folder yang aplikasi anda yang ada pada folder htdocs atau www jika anda menggunakan Wamp.
  2. Jika url yang dituju bukan merupakan suatu resource file, e.g, image, css file, javascript file atau file apapun itu, url akan ditulis kembali dengan menambahkan index.php dan diteruskan ke CodeIgniter. Jika url tersebut adalah suatu resource file yang valid, maka url tidak akan mengalami perubahan.
  3. Jika mod_rewrite tidak terinstal dalam webserver kita, 404 error akan dikirimkan ke index.php dan semuanya akan berjalan lancar.

Step 2 Configuring config.php file

Ada 2 setting yang perlu diubah jika kita akan menggunakan Mod Rewrite.

  • Set index_page
Dikarenakan kita menggunakan mod rewrite, setting ini harus diubah menjadi blank. Ubahlah script berikut :
$config['index_page'] = 'index.php';
menjadi,
$config['index_page'] = '';
  • Set uri_protocol

Untuk menggunakan mod rewrite beberapa sistem memerlukan konfigurasi uri_protocol untuk mendapatkan hasil yang sesuai dengan URI yang kita berikan. Kesalahan sering kali terjadi adalah ketika kita mengakses suatu fungsi dalam suatu controller, halaman yang ditampilkan bukanlah fungsi yang kita berikan melainkan halaman home atau fungsi index yang berada pada controller default. Maka ubahlah konfigurasi tersebut dari AUTO menjadi REQUEST_URI.

$config['uri_protocol'] = 'REQUEST_URI';

Step 3 Make sure mod_rewrite is activated

Dalam beberapa khasus webserver apache tidak secara default mengaktifkan modul ini, oleh karena itu periksalah script seperti berikut pada file httpd.conf pada folder apache/conf/

LoadModule rewrite_module modules/mod_rewrite.so

Dan pastikanlah baris itu tidak dalam keadaan inactivated atau diberikan komentar (#). Hilangkanlah tanda tersebut jika terdapat pada awal baris. Jika anda melakukan perubahan ini, anda harus melakukan restart apache untuk memastikan module mod_rewite telah diaktifkan.

The Results

Gambar 1 : Example URL before mod rewrite module

Gambar 2 : Example URL after mod rewrite module added

Summary

Tidak ada salahnya kan kita mempercantik website kita dimulai dengan URLnya. Jika anda berhasil, selamat! Jika tidak, mungkin ada kesalahan pada konfigurasi server anda, cobalah dari mengulang proses tutorial ini.

Anda bisa mendukung saya untuk tetap melakukan update tutorial dengan cara mem-follow blog saya, atau mem-follow twitter saya disini, bisa juga dengan meninggalkan komentar dan atau me-request tutorial yang anda inginkan. Best regards, eSDhee

Advertisements

2 thoughts on “CodeIgniter Talk : Mod Rewrite

  1. Pingback: CodeIgniter Talk : Pagination | eSDhee weBlog

  2. Pingback: CodeIgniter Talk : Basic Image Uploader | eSDhee weBlog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s