Sie rufen mod_rewrite umschreibt einen zweiten Durchlauf durch die Rewrite-Regeln?
-
04-07-2019 - |
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]
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).