mod_rewrite Frage
dave
- webserver
Hallo,
Wie löse ich folgende Problemstellung:
Wenn eine Url eingegeben wird, die keinen Slash am Ende hat, und keinen Doppelpunkt beinhaltet, soll ein Slash am Ende hinzugefügt werden.
Enthält die eingegebene Url jedoch einen Doppelpunkt so soll kein Slash hinzugefügt werden.
zB:
www.domain.de/test -> www.domain.de/test/ //Slash hinzufügen
www.domain.de/test:tmp -> www.domain.de/test:tmp //keinen Slash hinzufügen
Wie ich zu jeder Url, die nicht mit einem Slash endet, einen hinzufüge ist mir klar:
rewriteCond $1 !/$
rewriteRule ^([^.]+)$ /$1/ [R=301,L]
Jedoch weiß ich nicht, wie ich eine zusätzliche Bedinungen UND !: hinzufüge.
Vielen Dank für eure Hilfe
lg
hi,
Jedoch weiß ich nicht, wie ich eine zusätzliche Bedinungen UND !: hinzufüge.
Du willst als letztes Zeichen genau eines aus der Zeichenklasse fordern, die alles ausser dem Doppelpunkt enthält.
gruß,
wahsaga
hi,
Du willst als letztes Zeichen genau eines aus der Zeichenklasse fordern, die alles ausser dem Doppelpunkt enthält.
Sorry, nein, sollte ja nicht am Ende stehen müssen.
Dann willst du also deine Zeichenklasse so gestalten, dass sie alles ausser dem Doppelpunkt (und ggf. noch Slash?) enthalten darf.
Btw: Warum nutzt du derzeit eigentlich [^.], funktioniert das etwa - "alles ausser JedesBeliebigeZeichen" ...?
gruß,
wahsaga
Hallo,
Btw: Warum nutzt du derzeit eigentlich [^.], funktioniert das etwa - "alles ausser JedesBeliebigeZeichen" ...?
Ich dachte ^([^.]+)$ bedeutet: Ein oder beliebig viele Zeichen außer Punkt.
Es geht mir aber vielmehr um die Bedingung: rewriteCond $1 !/$
Denn die Regel tritt ja nur in Kraft, wenn $1 nicht mit einem Slash endet.
Daher müsste man die Bedingung eigentlich so formulieren:
rewriteCond $1 !/ && !: $
Jedoch ist diese Syntax nicht korrekt.
Moin,
Daher müsste man die Bedingung eigentlich so formulieren:
rewriteCond $1 !/ && !: $
Jedoch ist diese Syntax nicht korrekt.
Ich meine so etwas sollte gehen:
RewriteCond %{foo} [OR] bzw [AND]
RewriteCond %{bar}
um mehrere Bedingungen logisch zu verknüpfen. Ist nicht so ganz PHP kompatibel.
mit freundlichen Grüßen
Ulrich
Hallo,
RewriteCond %{foo} [OR] bzw [AND]
RewriteCond %{bar}
Leider erhalte ich hierbei einen Internal Server Error.
Grüße
dave
Moin,
Sorry, mein Fehler. Scheint OR geht, aber AND nicht.
Schau mal in der Doku, vielleicht findest Du noch was.
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
mit freundlichen Grüßen
Ulrich
gudn tach!
Sorry, mein Fehler. Scheint OR geht, aber AND nicht.
Schau mal in der Doku, vielleicht findest Du noch was.
AND wird immer implizit angenommen (wenn nicht durch [OR] explizit was anderes gesagt wird)
also wohl einfach
RewriteCond %{REQUEST_URI} !:
RewriteCond %{REQUEST_URI} !/$
prost
seth
Prost seth,
RewriteCond %{REQUEST_URI} !:
RewriteCond %{REQUEST_URI} !/$
Funktioniert perfekt.
Vielen, vielen Dank.
a te santé...
dave