mod_rewrite: alles weiterleiten, ausser "index.php"
Thomas
- webserver
Moin!
Habe ein kleines Mod-Rewrite-Problem: Ich möchte auf einer Domain alles nach index.php weiterleiten.
Beispiel: http://www.domain.tld/bla nach http://www.domain.tld/index.php?id=bla
So weit so gut, das müsste eigenlich so gehen:
RewriteRule ^(.*)$ index.php?id=$1 [L]
Nur muss jetzt natürlich "index.php" von der Regel ausgeschlossen werden. Wie mache ich das?
Danke!
Thomas
RewriteRule ^(.*)$ index.php?id=$1 [L]
Nur muss jetzt natürlich "index.php" von der Regel ausgeschlossen werden. Wie mache ich das?
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html#rewritecond
Hallo,
Danke, "RewriteCond" war das richtige Stichwort! Ich hab das jetzt so gemacht:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^.*index.php$ [NC]
RewriteRule ^(.*)$ index.php?id=$1 [L]
Thomas
Hallo Thomas,
RewriteCond %{REQUEST_FILENAME} !^.*index.php$ [NC]
Besser:
RewriteCond %{REQUEST_FILENAME} index.php
Dadurch sparst du dir unnoetige Quantifier, und ein Match eines
festen Strings ist wesentlich schneller.
RewriteRule ^(.*)$ index.php?id=$1 [L]
Besser:
RewriteRule ^(.+)$ index.php?id=$1 [L]
Dadurch sparst du dir das *, das sich gerne mal in einer
Endlosschleife verfaengt und dadurch den Match verlangsamt. Du
brauchst ihn hier ja nicht, da index.php ohne Parameter nicht
weitergeleitet werden braucht.
Grüße,
CK