My name is
Jurgens du Toit.
Systems Developer.
Problem Solver.
Technology and Solving Problems are my passion. I'm a South African that loves my wife, life, and coding.
In one of my pet projects, I redirect all requests to index.php, which then decides what to do with it:
###Simple Example
This snippet in your .htaccess will ensure that all requests for files and folders that does not exists will be redirected to index.php:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
This enables the rewrite engine:
RewriteEngine on
This checks for existing folders (-d) and files (-f):
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
And this does the actual redirecting:
RewriteRule . index.php [L]
###Extended Example
You can extend this to pass the requested path to the index.php file by modifying the RewriteRule
to the following:
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
^(.*)$
part tells the rewrite module that we want to pass down the whole requested path as one parameter.QSA
part tells the module to append any query strings to the request.?q=$1
tells the module how to pass down the parameter. In this case, it’s passed down as the q
parameter.You can extend this even further by using regular expressions. For example:
RewriteRule ^([^/]*)(.*)$ index.php?first=$1&second=$2 [L,QSA]
This will pass down the first part of the path as the first
parameter, and the rest as the second
. So the following request
http://yourhost.com/some/path/somewhere
will result in
http://yourhost.com/index.php?first=some&second=path/somewhere
This allows for some creative ways to do clean URLs.
###Trouble Shooting
If it’s not working, make sure that mod_rewrite is installed on Apache. On a unix system you can just do
sudo a2enmod rewrite
to achieve that.