URL Rewriting ist eine der üblichen Funktionen von HTTP Servern. Trotzdem unterscheiden sich die Regeln und die Konfiguration zwischen ihnen sehr stark. Anbei sind einige der üblichen Vorschläge für eine Vielzahl der populären Webserver zu finden, die zur der Zeit in der das hier geschrieben wurde, vorhanden sind.
Alle folgenden Beispiel verwenden mod_rewrite, ein offizielles Modul, das zusammen mit Apache kommt. Um es zu verwenden, muss mod_rewrite entweder wärend der Zeit des Kompilierens enthalten sein, oder als Dynamic Shared Objekt (DSO) aktiviert werden. Konsultieren Sie bitte die Apache Dokumentation für weitere Informationen über Ihre Version.
Hier ist eine sehr grundsätzliche Definition eines virtuellen Hosts. Diese
Regeln leiten alle Anfragen auf index.php
weiter, ausser
wenn eine passende Datei im document_root gefunden wurde.
<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>
Es ist der Schrägstrich ("/") zu beachten der index.php
vorangestellt ist; die Regeln für .htaccess
unterscheiden
sich in diesem Punkt.
Anbei ist eine einfache .htaccess
Datei welche
mod_rewrite verwendet. Das ist ähnlich der Konfiguration
für virtuelle Hosts, ausser dass sie nur die Rewrite Regeln spezifiziert, und der
führende Schrägstrich bei index.php
nicht angegeben wird.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Es gibt viele Wege um mod_rewrite zu konfigurieren; wenn man weitere Informationen haben will, dann sollte man in Jayson Minards Blueprint for PHP Applications: Bootstrapping sehen.
Ab Version 7.0 wird IIS jetzt mit einer standardmäßigen Rewrite Engine ausgeliefert. Man kann die folgende Konfiguration verwenden, um die entsprechenden Rewrite Regeln zu erstellen.
<?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>