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 mit RewriteRule ^/ , 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>


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow