it-swarm.com.de

Was ist L in [QSA, L] in htaccess

QSA bedeutet, dass, wenn eine Abfragezeichenfolge mit der ursprünglichen URL übergeben wird, diese an das Umschreiben angehängt wird (olle? P = 1 wird als index.php? Url = olle & p = 1 umgeschrieben).

L bedeutet, wenn die Regel übereinstimmt, keine RewriteRules unter dieser Regel mehr verarbeiten.

Hallo, was sind einige einfache Beispiele, um die Verwendung von L zu erklären? Ich kann diese Erklärung nicht verstehen. Jede Hilfe wird sehr geschätzt. Vielen Dank.

53
stackoverflower

Das QSA -Flag bedeutet, dass eine vorhandene Abfragezeichenfolge angehängt werden soll after Die URI wurde umgeschrieben. Beispiel:

URL = http://example.com/foo/bar?q=blah

Regel:

RewriteRule ^foo/(.*)$ /index.php?b=$1

Ergebnis = /index.php?b=bar

Beachten Sie, wie der q=blah weg ist. Da die vorhandene Abfragezeichenfolge zugunsten der Zeichenfolge im Ziel der Regel gelöscht wird (b = $ 1). Wenn Sie jetzt ein QSA -Flag einfügen:

RewriteRule ^foo/(.*)$ /index.php?b=$1 [QSA]

Das Ergebnis wird zu = /index.php?b=bar&q=blah


Das L -Flag bedeutet einfach, dass die folgenden Regeln nicht mehr angewendet werden. Mit der gleichen URL http://example.com/foo/bar?q=blah und den folgenden Regeln:

RewriteRule ^foo - 

RewriteCond %{REQUEST_URI} !^/bar.php
RewriteRule ^(.*)$ /bar.php?z=$1 

Die erste Regel wird angewendet und der URI wird unverändert durchgereicht (über das Ziel -). Die Rewrite-Engine verarbeitet dann die nächste Regel und der URI wird in /bar.php?z=foo/bar umgeschrieben. Was passiert, wenn Sie am Ende ein L hinzufügen:

RewriteRule ^foo - [L]

RewriteCond %{REQUEST_URI} !^/bar.php
RewriteRule ^(.*)$ /bar.php?z=$1 

Die URL http://example.com/foo/bar wird von der ersten Regel an unberührt weitergeleitet, dann stoppt aufgrund des L -Flags. Wenn die URL http://example.com/something/else ist, stimmt die erste Regel nicht überein und die zweite Regel wird angewendet. Der URI wird neu geschrieben in: /bar.php?z=something/else

Da die Rewrite-Engine alle Regeln durchläuft, bis sich der URI nicht mehr ändert, verhindert das Flag L not, dass die Schleife ausgeführt wird. In der aktuellen Regel werden nur weitere Regeln angewendet Iteration.

72
Jon Lin

.htaccess Flag Liste

  • C (chained with next rule)
  • CO = Cookie (gesetztes Cookie)
  • E = var: value (Umgebungsvariable var auf value setzen)
  • F (forbidden - sends a 403 header to the user)
  • G (gone - no longer exists)
  • H = Handler (Set-Handler)
  • L (Last-Stop-Verarbeitungsregeln)

Letzte Regel: Weist den Server an, das Neuschreiben zu beenden, nachdem die vorherige Anweisung verarbeitet wurde.

  • N (next - continue processing rules)
  • NC (Groß- und Kleinschreibung wird nicht berücksichtigt)
  • NE (keine Sonderzeichen der URL in der Ausgabe maskieren)
  • NS (ignoriere diese Regel, wenn die Anfrage eine Unteranfrage ist)
  • P (proxy - i.e., Apache should grab the remote content specified in the substitution section and return it)
  • PT (Pass-Through - Verwendung bei der Verarbeitung von URLs mit zusätzlichen Handlern, z. B. mod_alias)
  • R (temporary redirect to new URL)
  • R = 301 (permanente Weiterleitung zur neuen URL)
  • QSA (Anhängen der Abfragezeichenfolge von der Anforderung an die ersetzte URL)
  • S = x (nächste x Regeln überspringen)
  • T = MIME-Typ (erzwungene Angabe des MIME-Typs)

Am Ende einer Umschreiberegel werden Flags hinzugefügt, um Apache mitzuteilen, wie die Regel zu interpretieren und zu behandeln ist. Sie können Apache anweisen, die Regel als unabhängig von Groß- und Kleinschreibung zu behandeln, die Verarbeitung von Regeln zu beenden, wenn die aktuelle Regel zutrifft, oder eine Reihe anderer Optionen. Sie sind durch Kommas getrennt und in eckigen Klammern angegeben.

60
Smit Patadiya