Route all requests the server to one index.php
file. This technique is known as bootstrapping. It transfers the routing responsibility from the web server to the app.
The first step is to setup an Apache virtual host which will follow SymLinks and allow overrides from mod rewrite.
# httpd.conf
<VirtualHost *>
ServerName mydomain.com
DocumentRoot "/abs/path/to/mywebroot"
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
A .htaccess
file must exist in the same directory as the index.php
file.
# .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/$ /$1 [L,R=301] # This enforces NO trailing slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>