Mehrere mod_rewrite-Regeln
Richard78
- webserver
Hallo Gemeinde,
ich habe meine bestehende eine Umleitungsregel ergänzt und nach etwas Probieren nun folgenden Teil einer htaccess-Datei:
RewriteEngine On
RewriteBase /
RewriteCond $1 >1234
RewriteRule ^eins/([0-9]+).php verzeichnis/eins.php?id1=$1 [L]
RewriteCond $1 >5678
RewriteRule ^zwei/([0-9]+).php verzeichnis/zwei.php?id2=$1 [L]
Bisher funktioniert es so, aber ist das korrekt oder bekomme ich damit Probleme, weil sich zum Beispiel die Variablen in die Quere kommen? Anfangs dachte ich, bei der zweiten Regel müsste ich $2 statt $1 schreiben, aber damit hat es nicht funktioniert. Und meine schnelle Suche zu mehreren Regeln war leider erfolglos...
Danke für jede Hilfe!
Hi!
Bisher funktioniert es so, aber ist das korrekt oder bekomme ich damit Probleme, weil sich zum Beispiel die Variablen in die Quere kommen? Anfangs dachte ich, bei der zweiten Regel müsste ich $2 statt $1 schreiben, aber damit hat es nicht funktioniert.
Wenn es regelübergreifend nummeriert werden müsste, wäre das äußerst unpraktisch, denn es gibt ja nicht nur deine Regel hier sondern vielleicht auch noch Regeln in der Hauptkonfiguration und in anderen Verzeichniskonfigurationsdateien. Bei Shared Hosting mit mehreren Kunden müsste man mod_rewrite ganz vergessen, weil es nicht mehr zu organisieren geht. Und 1..9 Regeln für den gesamten Server wäre auch verdammt wenig. Und da sich $0 auf das gesamte Pattern bezieht .. hmm, auch welches denn nun?
Jede Regel arbeitet für sich, nur die RewriteConds arbeiten zusammen mit der nachfolgenden RewriteRule.
Lo!
Jede Regel arbeitet für sich, nur die RewriteConds arbeiten zusammen mit der nachfolgenden RewriteRule.
Danke für die Antwort, da bin ich beruhigt! Dann kann ich im obigen Format also beruhigt noch weitere Regeln runtersetzen mit jeweils eigenen RewriteConds, ohne dass diese sich in die Quere kommen.
Hi!
Jede Regel arbeitet für sich, nur die RewriteConds arbeiten zusammen mit der nachfolgenden RewriteRule.
Dann kann ich im obigen Format also beruhigt noch weitere Regeln runtersetzen mit jeweils eigenen RewriteConds, ohne dass diese sich in die Quere kommen.
Ja. Beachte aber, dass der Request nach einem Rewriting auf einen internen Redirect geschickt wird. Dieser wird dann wie ein neuer Request behandelt und durchläuft wieder alle Regeln. Wenn die Regeln nicht mehr passen, merkt man davon nichts. Aber solch allgemeinen Regeln wie (.*) treffen jedes Mal zu, so dass es zu einer Schleife kommt, wenn man nicht mit RewriteConds die Regeln unzutreffend macht, indem man existierende Dateien und Verzeichnisse ausschließt.
Lo!