Was bedeutet $ 1 [QSA, L] in meiner .htaccess-Datei?

Antworten:

215

Nicht der Ort, um ein vollständiges Tutorial zu geben, aber hier ist es kurz;

RewriteCond bedeutet im Grunde "die nächste RewriteRule nur ausführen, wenn dies wahr ist". Der !-lPfad ist die Bedingung, dass die Anforderung keine Verknüpfung betrifft ( !bedeutet nicht, -lbedeutet Verknüpfung).

Die RewriteRule bedeutet im Grunde, dass wenn die Anfrage übereinstimmt ^(.+)$(mit einer beliebigen URL außer dem Server-Stamm übereinstimmt), sie neu geschrieben wird, index.php?url=$1was bedeutet, dass eine Anfrage olleumgeschrieben wird als index.php?url=olle).

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

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

Weitere Informationen hierzu finden Sie unter den obigen Links. Die Unterstützung beim Umschreiben kann etwas schwer zu verstehen sein, aber es gibt einige Beispiele für den Stapelüberlauf, aus denen man lernen kann.

Joachim Isaksson
quelle
QSA ersetzt ?zu &, was es unmöglich macht, zwischen /page&foobarvs zu unterscheiden /page?foobar. Wie kann ich QSA stoppen ersetzen ?zu &?
Pacerier
8

Wenn die folgenden Bedingungen erfüllt sind, schreiben Sie die URL neu:
Wenn der angeforderte Dateiname kein Verzeichnis ist,

RewriteCond %{REQUEST_FILENAME} !-d

und wenn der angeforderte Dateiname keine reguläre Datei ist,

RewriteCond %{REQUEST_FILENAME} !-f

und wenn der angeforderte Dateiname kein symbolischer Link ist,

RewriteCond %{REQUEST_FILENAME} !-l

Schreiben Sie dann die URL folgendermaßen neu:
Nehmen Sie den gesamten Anforderungsdateinamen und geben Sie ihn als Wert eines "url" -Abfrageparameters für index.php an. Fügen Sie eine beliebige Abfragezeichenfolge aus der ursprünglichen URL als weitere Abfrageparameter (QSA) hinzu und beenden Sie die Verarbeitung dieser .htaccess-Datei (L).

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

Apache docs #flag_qsa

Ein anderes Beispiel:

RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]

Mit dem [QSA] -Flag eine Anfrage nach

/ pages / 123? eins = zwei

wird zugeordnet

/page.php?page=123&one=two

Anteliebe
quelle
0

Dies wird erfassen Anforderungen für Dateien wie version, releaseund README.mdusw. , die entweder als Endpunkte behandelt werden soll, falls definiert (wie im Fall von / release) oder als „nicht gefunden.“

Pyae Sone
quelle