Bekerja dengan framework tentunya juga ingin memaksimalkan fitur yang
telah disediakan, yang ingin saya share pada tulisan ini adalah untuk
mengaktifkan modul mod_rewrite pada apache2 yang berjalan pada ubuntu
(saat ini saya menggunakan Ubuntu 9.10 - the Karmic Koala).
Sekilas tentang mod_rewrite (ref:
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html) :
mod_rewrite dibutuhkan untuk melakukan penulisan ulang URL berdasarkan
regular-expression parser secara on the fly. Manipulasi URL bisa
dilakukan untuk server variable, environment variables. HTTP headers,
time stamps dan lain-lain. mod_rewrite beroperasi pada URL lengkap
(termasuk bagian path-info)
baik dalam konteks per-server (httpd.conf) dan konteks per-directory
(.htaccess).
Ok, implementasi realnya karena saat ini saya menggunakan sebuah
framework (Codeigniter). Default config.php ($config['index_page'] =
"index.php";) akan membuat kondisi URL menjadi :
http://localhost/index.php/var1/var2/
dan alangkah indahnya :) apabila hal tersebut bisa kita buat menjadi
(hapus index.php pada config.php -> $config['index_page'] = ""):
http://localhost/var1/var2/
selain itu, dalam Codeigniter juga diterapkan path folder/file yang
sangat konsisten sehingga semua file/folder akan mengikuti rule dari
framework ini. misalnya, apabila kita menyimpan file abcd.txt di root
folder codeigniter maka kita file tersebut tidak bisa diakses melalui
http://localhost/abcd.txt melainkan harus kita tulis rulenya yang
melibatkan modul mod_rewrite.
Langkah-langkah mengaktifkan
mod_rewrite
pada ubuntu sebagai berikut :
1. Aktifkan mod_rewrite dengan
perintah di terminal/console:
sudo a2enmod rewrite
dengan perintah diatas, maka kita bisa melihat file
rewrite.load di
/etc/apache2/mod-enabled dan untuk lebih meyakinkan lagi, anda bisa
membuat file php yang isinya : <?php phpinfo(); ?>
2. Edit file
/etc/apache2/site-enable/000-default
edit :
AllowOverride none
menjadi
AllowOverride all
sample kurang lebih sebagai berikut:
#<Directory /var/www/>
<Directory
/home/ezwan/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
3. Restart apache dengan perintah di
terminal/console:
sudo /etc/init.d/apache2 restart
4. Buat file .htaccess dan simpan di
root directory codeigniter dan isinya kurang lebih seperti dibawah ini:
# Set the default handler.
DirectoryIndex index.php
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt|info\.txt|abcd\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>
dengan rule diatas, maka keinginan untuk memiliki url ringkas (tanpa
index.php) dan akses file abcd.txt bisa dilakukan.
Semoga membantu ..