Seite 1 von 1

RewriteRule überschreiben - nur wie?

Verfasst: 16.10.2006, 10:13
von canetti
Hallo alle zusammen,

ich habe einige Fragen zu den RewriteRules. Ich möchte mal mit einer (hoffentlich) leichten Frage anfagen:
Also ich möchte ALLE Anfragen, die auf das Verzeichnis /webkatalog/ gehen auf die seite /webkatalog/kat.php?id=$1 leiten.
Nicht jedoch Anfragen, die direkt auf die index.htm gehen.

Das ist meine htaccess:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /webkatalog/
RewriteRule ^([a-zA-Z0-9]+).htm$ /webkatalog/kat.php?id=$1
RewriteRule ^index.htm$ index.htm?id=$1

Die erste RewriteRule funktioniert! Und ich dachte, dass ich mit der zweiten Rule die erste Rule überschreiben würde - so, das halt alle Anfragen, die auf die index.htm gehen nicht von der ersten Rule erfasst werden. Das ist jedoch leider falsch!

Auch die Anfragen, die direkt auf die index.htm gehen werden von der ersten Rule erfasst ;-(

Habe auch schon etwas über die RewriteCond gelesen. Nur leider habe ich da auch keine Lösung gefunden.

Kann mir also jemand helfen - wie muss die Rule richtig lauten?

Gruß an alle
canetti

Verfasst:
von

Re: RewriteRule überschreiben - nur wie?

Verfasst: 16.10.2006, 10:22
von haha
canetti hat geschrieben:Also ich möchte ALLE Anfragen, die auf das Verzeichnis /webkatalog/ gehen auf die seite /webkatalog/kat.php?id=$1 leiten.
Nicht jedoch Anfragen, die direkt auf die index.htm gehen.

RewriteRule ^([a-zA-Z0-9]+).htm$ /webkatalog/kat.php?id=$1
RewriteRule ^index.htm$ index.htm?id=$1

Die erste RewriteRule funktioniert! Und ich dachte, dass ich mit der zweiten Rule die erste Rule überschreiben würde
Nein, andersrum: Die erste passende Regel wird ausgeführt. Schreib die zweite vor der ersten Zeile, dann funktioniert es so, wie Du es Dir vorstellst. Voraussetzung ist allerdings, Du ruftst tatsächlich (und unnötigerweise) index.htm auf. Füge besser noch eine weitere Zeile für das Muster ^$ hinzu, um neben /webkatalog/index.htm auch den Aufruf des Verzeichnisses selbst, also /webkatalog/, abzufangen.

Das Anfügen von ?id=$1 in der zweiten Regel ist übrigens überflüssig, solange Du im Muster nichts mit runden Klammern aufgreifst, lässt sich mit $n auch nichts einfügen.