Apache Mod Rewrite
mod_rewrite is an apache module which enables rewriting of urls requested by client before the pages are fetched by apache. For example www.site.com/products.php?code=459 can be written as www.site.com/products/459 or www.site.com/products/459.html . The second url is re-written into the first one by mod_rewrite using rewrite rules specified in the .htaccess file.
To enable the mod_rewrite :
sudo a2enmod rewrite
To disable this module :
sudo a2dismod rewrite
Next edit the file :
Look for the section :
<directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </directory>
Replace the AllowOverride None with AllowOverride FileInfo as :
<directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride FileInfo Order allow,deny allow from all </directory>
Now restart apache
sudo /etc/init.d/apache2 restart
Now place an .htaccess file in say /var/www/ folder to test mod rewrite
To test whether mod_rewrite is working or not , fill the .htaccess file with some garbage text save and then open some file of that folder in the browser. You should get a 500 Internal Server Error and a .htaccess error in the apache log file. This shows that now mod_rewrite is enabled.
Now put some rewrite rules in the .htaccess file
RewriteEngine on RewriteRule ^([0-9]+).html$ index.php?id=$1
which should replace a folder/23.html to folder/index.php?id=23 for example.
1. Apache 1.3 mod rewrite