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.
+
+
+
RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} -s [OR]
+RewriteCond %{REQUEST_FILENAME} -l [OR]
+RewriteCond %{REQUEST_FILENAME} -d
+RewriteRule ^.*$ - [NC,L]
+RewriteRule ^.*$ index.php [NC,L]
+
+
+
+ There are many ways to configure mod_rewrite; if you
+ would like more information, see Jayson Minard's » Blueprint for PHP Applications:
+ Bootstrapping.
+
+
+
+
Microsoft Internet Information Server
+
+
+
+ As of version 7.0, IIS now ships with a standard rewrite engine.
+ You may use the following configuration to create the appropriate rewrite rules.
+
+
+
<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+ <system.webServer>
+ <rewrite>
+ <rules>
+ <rule name="Imported Rule 1" stopProcessing="true">
+ <match url="^.*$" />
+ <conditions logicalGrouping="MatchAny">
+ <add input="{REQUEST_FILENAME}"
+ matchType="IsFile" pattern=""
+ ignoreCase="false" />
+ <add input="{REQUEST_FILENAME}"
+ matchType="IsDirectory"
+ pattern=""
+ ignoreCase="false" />
+ </conditions>
+ <action type="None" />
+ </rule>
+ <rule name="Imported Rule 2" stopProcessing="true">
+ <match url="^.*$" />
+ <action type="Rewrite" url="index.php" />
+ </rule>
+ </rules>
+ </rewrite>
+ </system.webServer>
+</configuration>
+
+