2016-05-01 7 views
0

Ich suche nach Hilfe, um zu verstehen, wie eine bestimmte .htaccess-Datei funktioniert.Understanding .htaccess Datei

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

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

Hier ist, was ich glaube, ich verstehe so weit:

Zeile 1: erlauben Apache Urls auf bestimmte Regeln basierend zu ändern?

Zeile 2,3: Etwas über den Zugriff auf Dateien und Verzeichnisse. Mein Browser hat jedoch keine Probleme mit dem Zugriff auf http://localhost/dev/can_i/yes_i_can.php, daher glaube ich nicht, dass ich das richtig verstehe.

Zeile 4: Ich bekomme, dass ^(.*)$ ist ein regulärer Ausdruck sagt "Anfang und Ende mit allem" aber was genau bezieht sich darauf? die ganze URL? Dann wird es durch index.php mit dem angehängten Ausdruck ersetzt. Also warum bekommen wir keine Dinge wie localhost/index.php?url=localhost/index.php/whatever_came_after? Was macht schließlich [L, QSA]? Ich weiß QSA bedeutet "Abfrage String append", aber nicht sicher, wie es funktioniert.

Jede Hilfe sehr geschätzt.

Antwort

5

diese

Apache mod_rewrite aktivieren
RewriteEngine on 

diese zwei Linien bedeuten, dass, wenn die Datei mit dem angegebenen Namen im Browser, verfahren nicht vorhanden ist, oder das Verzeichnis im Browser nicht existiert dann die rewrite-Regel unter

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond bedeutet im Grunde „nur die nächste RewriteRule auszuführen, wenn das wahr ist“. Der !-l Weg ist die Bedingung, dass die Anforderung nicht für einen Link ist (! Bedeutet nicht, -l bedeutet link)

Die RewriteRule bedeutet im Grunde, dass, wenn die Anforderung erfolgt, die ^(.+)$ (entspricht einer beliebigen URL außer dem Server root) übereinstimmt, es wird als index.php? url = $ 1 umgeschrieben, was bedeutet, dass eine Anfrage für olle als index.php? url = olle umgeschrieben wird.

QSA bedeutet, dass, wenn es eine Abfrage-String ist mit dem Original-URL übergeben, wird es an die Rewrite angehängt werden (olle? P = 1 wird als index.php?url=olle&p=1 neu geschrieben werden.

L bedeutet, wenn die Regel zutrifft, don‘ t weitere RewriteRules unter diesem

Für weitere Informationen zu diesem Thema, folgen Sie den oben stehenden Links Die Rewrite-Unterstützung kann ein wenig schwer zu verstehen sein, aber es gibt einige Beispiele auf Stackoverflow von

zu lernen