mod-rewrite
Kontexte der Regeln zum Umschreiben
Suche…
Bemerkungen
In diesem Thema werden die beiden Kontexte beschrieben, in denen RewriteRule verwendet werden kann. In Beispielen, in denen RewriteEngine on , wird davon ausgegangen, dass diese Anweisung vor diesem Beispiel aufgetreten ist.
Umschreiben von Regeln in pro-Verzeichnis-Kontext
Der Kontext pro Verzeichnis ist Teil der statischen Konfigurationsdatei zwischen den Tags <Directory> und </Directory> . Der gesamte Inhalt der dynamischen Konfigurationsdateien befindet sich im Kontext des Verzeichnisses des Ordners, in dem sich der .htaccess befindet.
RewriteRule 's im pro-Verzeichnis-Kontext RewriteRule dem Teil einer URL nach Protokoll, Hostname, Port und Präfix des Verzeichnisses, in dem sie sich befinden, und vor der RewriteRule .
In der statischen Konfigurationsdatei
Wenn die folgende Regel für die URL http://example.com/foo?id=1 , wird die Regex im ersten Argument von RewriteRule mit foo abgeglichen. Das Protokoll ( http ), der Hostname ( example.com ) und das Präfix für dieses Verzeichnis ( / ) werden entfernt. Am anderen Ende wird auch die Abfragezeichenfolge ( ?id=1 ) entfernt.
<Directory "/">
RewriteRule ^foo$ bar [L]
</Directory>
Im folgenden Beispiel würde unter Verwendung der URL http://example.com/topic/15-my-topic-name das erste Argument von RewriteRule mit topic/15-my-topic-name abgeglichen:
<Directory "/topic/">
RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>
In der dynamischen Konfigurationsdatei
Wenn die folgende Regel in einer .htaccess Datei im Ordner "www-root" abgelegt und dann für die URL http://example.com/foo?id=1 , wird die erste Regex mit foo abgeglichen.
RewriteRule ^foo$ bar [L]
Im Kontext eines Verzeichnisses beginnt die übereinstimmende URL niemals mit einem
/. In einem solchen Kontext wird eine Direktive, die mitRewriteRule ^/, niemals mit irgendetwas übereinstimmen.
Regeln im virtuellen Host umschreiben
Der virtuelle Host-Kontext ist Teil der statischen Konfigurationsdatei zwischen den Tags <VirtualHost> und </VirtualHost> .
RewriteRule 's im virtuellen RewriteRule dem Teil einer URL nach Protokoll, Hostname und Port und vor der RewriteRule überein.
Wenn die folgende Regel für die URL http://example.com/foo?id=1 , wird die Regex im ersten Argument von RewriteRule mit /foo abgeglichen.
<VirtualHost 1.2.3.4:80>
ServerName example.com
RewriteEngine on
RewriteRule ^/foo$ /bar [L]
</VirtualHost>