Previous topic

Next topic

Rewrite Configuration Guide

URL rewriting is a common function of HTTP
servers. However, the rules and configuration differ widely between them. Below are
some common approaches across a variety of popular web servers available at the time of
writing.

Apache HTTP Server

All examples that follow use mod_rewrite, an official
module that comes bundled with Apache. To use it,
mod_rewrite must either be included at compile time or
enabled as a Dynamic Shared Object (DSO). Please consult the
» Apache documentation for your
version for more information.

Rewriting inside a VirtualHost

Here is a very basic virtual host definition. These rules direct all requests
to index.php, except when a matching file is found under
the document_root.

<VirtualHost my.domain.com:80>

ServerName my.domain.com

DocumentRoot /path/to/server/root/my.domain.com/public

RewriteEngine off

<Location />

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ /index.php [NC,L]

</Location>

</VirtualHost>

Note the slash ("/") prefixing index.php; the rules for
.htaccess differ in this regard.

Rewriting within a .htaccess file

Below is a sample .htaccess file that utilizes
mod_rewrite. It is similar to the virtual host
configuration, except that it specifies only the rewrite rules, and the leading
slash is omitted from index.php.