Apache RewriteRules - Wann würden Sie das [L] -Flag NICHT benutzen?

8

Ich verstehe, dass das [L] -Flag alle weiteren RewriteRules stoppen soll, aber ich scheine natürlich jedem RewriteRule [L] hinzuzufügen, und das gehört zu fast jeder Regel in Code-Schnipsel und Beispiele online.

Ich verstehe nicht wirklich, wann Sie ein [L] -Flag verwenden würden und wollen, weil es so aussieht, als ob alle RewriteRules, die ich schreibe, mit oder ohne [L] -Flagge funktionieren.

Kann jemand ein Beispiel für eine Regel angeben, die [L] benötigt, und eine, die [L] nicht haben sollte?

    
BadHorsie 02.08.2012, 11:34
quelle

1 Antwort

11

Aus dem Kopf, wenn Sie L nicht verwenden möchten:

  • Wenn Sie ein Neuschreiben mit dem N Flag

    wiederholen müssen %Vor%
  • Wenn Sie eine Gruppe von Umschreibungen logisch mit dem C -Flag

    verketten %Vor%
  • Wenn Sie einige Regeln überspringen müssen, indem Sie das S -Flag (aus Apache-Dokumenten, weil ich nicht an ein funktionierendes Beispiel denken kann) verwenden

    %Vor%
  • Wenn Sie umleiten möchten, aber andere Regeln benötigen, müssen Sie den URI vor der Umleitung mit dem R -Flag

    verarbeiten %Vor%

Andererseits muss manchmal das Flag L nicht verwendet werden, aber es stellt sicher, dass das Umschreiben stoppt, wenn diese Regel angewendet wird. Es macht es einfach Regeln zu erstellen, da es unterschiedliche Regelwerke davon abhält, sich gegenseitig zu stören, also ist es normalerweise eine auf der sicheren Seite Sache, die einfach eine L Markierung enthält Das Ende all deiner Regeln, weil du in 99% der Fälle einfach nur aufhören willst.

Beachten Sie, dass L nur die aktuelle Iteration des Neuschreibens stoppt. Die Rewrite-Engine wird eine Schleife ausführen, bis der URI, der in die Engine eingegeben wird, genau mit dem URI übereinstimmt, der ausgegeben wird (die Abfragezeichenfolge ist nicht Teil des URI).

    
Jon Lin 02.08.2012, 12:42
quelle

Tags und Links