Ich muss meine ändern .htaccess
und es gibt zwei Zeilen, die ich nicht verstehe.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Wann sollte ich diese Zeilen verwenden?
Ich muss meine ändern .htaccess
und es gibt zwei Zeilen, die ich nicht verstehe.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Wann sollte ich diese Zeilen verwenden?
Antworten:
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 !-l
Pfad ist die Bedingung, dass die Anforderung keine Verknüpfung betrifft ( !
bedeutet nicht, -l
bedeutet 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=$1
was bedeutet, dass eine Anfrage olle
umgeschrieben wird als index.php?url=olle
).
QSA
bedeutet, dass wenn eine Abfragezeichenfolge mit der ursprünglichen URL übergeben wird, diese an das Umschreiben angehängt olle?p=1
wird ( 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.
?
zu &
, was es unmöglich macht, zwischen /page&foobar
vs zu unterscheiden /page?foobar
. Wie kann ich QSA stoppen ersetzen ?
zu &
?
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]
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