Thomas: mod_rewrite: alles weiterleiten, ausser "index.php"

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

  1. 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

    1. 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

      1. 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

        --
        To define recursion, we must first define recursion.
        http://wwwtech.de/