2012-11-13 13 views
17

Ich richte Apache-Rewrite-Regeln ein, um meine CodeIgniter-URLs aufzuräumen.

This question (und viele Forenbeiträge usw., die ich rund um den Ort gefunden habe) Dokument die Verwendung der folgenden Regel (oder etwas sehr ähnlich):

RewriteEngine on 
RewriteCond $1 !^(index\.php|phpinfo\.php|images|robots\.txt|sitemap\.xml\.gz|sitemap\.xml|assets) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

weiß, dass ich die 1 $, nachdem die RewriteRule bezieht sich zu der gefangenen Zeichenkette von (. *), aber was stellt die erste $ 1 (direkt nach dem RewriteCond) dar? Viele Beispiele, die ich gesehen habe, verwenden etwas wie% {REQUEST_URI} als erstes Argument für RewriteCond.

Antwort

17

Die $1 ist im Grunde der erfassten Inhalte von allem Anfang und Ende der Zeichenfolge. Mit anderen Worten, .

In Ihrem Rewrite bedeutet die ^ der Anfang der Zeichenfolge, die (.*) sagt etwas zu entsprechen, und die $ bedeutet das Ende des Strings. Also, im Grunde heißt es alles vom Anfang bis zum Ende des Strings zu nehmen und diesen Wert $ 1 zuzuweisen.

Also wenn ich www.example.com/tacos-are-good eintippe, dann $1 = "tacos-are-good". Dein Endeffekt wird also www.example.com/index.php/tacos-are-good sein.

Hier ist ein Spickzettel für ModRewrite, die hilfreich sein können: http://www.addedbytes.com/cheat-sheets/mod_rewrite-cheat-sheet/

+2

So beide Instanzen von $ 1 dann auf den gleichen Wert beziehen? –

+1

Ja. In der "RewriteCond" sagt es im Grunde, dass es das Neuschreiben so lange ausführen wird, bis $ 1 nicht gleich den Dateien ist, die rechts von der Bedingung aufgelistet sind. – sbeliv01

6

$ 1 steht für die Übereinstimmung mit dem ersten Satz von Klammern im folgenden regulären Ausdruck. ($ 2 würde dem zweiten Satz von Klammern entsprechen - falls angegeben)

Zum Beispiel stimmt der reguläre Ausdruck mit allem überein, was NICHT "index.php" oder "phpinfo.php" usw. ist. Also wird die Umschreibbedingung übergeben, wenn Die angeforderte URL gehört nicht dazu, und der übereinstimmende Abschnitt wird dann an die Schreibmaschine übergeben.

Verwandte Themen