Frage

Wenn ein RewriteRule von mod_rewrite werden alle mod_rewrite Regeln ausgeführt werden wieder für die neu erzeugte Anforderung ausgeführt wird? Insbesondere in dem folgenden Beispiel wird dies eine Schleife verursachen?

RewriteCond Host:  (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
War es hilfreich?

Lösung

In Ihrem Fall, es wird nicht in jedem Fall eine Schleife tun. Sie haben die „L“ Schalter auf, dass bestimmte Regel als letzte Festsetzung.

Des Weiteren müssen Sie explizit die nächste Iteration erzwingen, indem Sie den „N“ oder „NS“ Schalter verwendet wird, oder es wird nur durch die Regel-Datei verschieben und mit der letzten Regel stoppen, die übereinstimmt. Aus der Dokumentation:

  

N (Next Iteration)

     

Forces Rewriting Engine zu ändern   Ziel und Neustart der Regel Regeln   Überprüfung von Anfang an (alle   Änderungen werden gespeichert). Anzahl der   neu gestartet wird durch den Wert begrenzt,   in der RepeatLimit angegeben   Richtlinie. Wird diese Zahl überschritten wird   N-Flag wird einfach ignoriert werden.

     

NS (nächste Iteration der gleichen Regel)

     

Funktioniert wie der N-Flag aber neu gestartet   Regeln Verarbeitung von derselben Regel   (Das heißt Kräfte Wiederholung der Regel   Anwendung). Maximale Anzahl der a   einzelne Regel Iterationen wird durch die gegebene   RepeatLimit Richtlinie. Aber eine Reihe von   eine einzige Regel Wiederholungen zählen nicht   für die weltweite Anzahl der Wiederholungen (d.h.   wiederholt Grenze für eine Reihe von   Iterationen, die durch N-Flag   unabhängig von einer Anzahl von Wiederholungen   verursacht durch NS).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top