Ich dachte, das Flag [L] zeigt an, dass „diese Regel die letzte Regel sein soll, die für diese HTTP-Anfrage verarbeitet wird …“
Wenn ich jedoch zwei Regeln habe, wie:
RewriteRule ^test$ php/test.php [L]
RewriteRule (.*) error.php
Was immer passiert, sind Anfragen anhttp://localhost/testgehe zu error.php,nichtin test.php, wie ich es erwartet habe, da ich das [L] dort eingefügt habe. Wenn Sie die zweite Regel dort auskommentieren, dann werden Anfragen anhttp://localhost/testGehen Sie wie erwartet zu test.php.
Was ich wirklich versuche, ist, 404-Fehler mit mod_rewrite abzufangen. Es ist möglich, dass das, was ich versuche, einfach falsch ist. Aber ich möchte trotzdem wissen, warum die Catch-All-Regel aktiv ist, daIch tatSetzen Sie nach der Regel ein [L] ^test
.
Ich sehe eine große Auflistung inHierwo der Serveradministrator eine Reihe von Pfaden auflistet, die mit den erkannten Verzeichnissen beginnen, aber ich wollte dies vermeiden, indem ich einfach eine nette Catch-All-Regel verwende.
Antwort1
Wenn eine Regel zu einer Client-Umleitung führt, wird sie, wenn der Client die umgeleitete Anforderung stellt, erneut von oben in die Regelliste eingetragen.