doppelte trailing slashes entfernen
Fritz
- webserver
Hallo,
mit folgender
RewriteRule ^(.*[^/])//$ /$1/ [R=301,L]
in der .htaccess gelingt es mir, doppelte trailing slashes von URLs zu entfernen. Aber nur, wenn ich ein Verzeichnis aufrufe:
http://example.com/verzeichnis//
Bei
http://example.com//
schaffe ich es einfach nicht.
Kann bitte jemand einem alten Mann über die Straße helfen.
Gruß Fritz
Hi,
mit folgender
RewriteRule ^(.*[^/])//$ /$1/ [R=301,L]
in der .htaccess gelingt es mir, doppelte trailing slashes von URLs zu entfernen.
Wozu? Gibt es derart viele falsche Links auf deine Seiten?
Normalerweise kommt der Apache doch auch mit mehrfachen Slashes klar.
Aber nur, wenn ich ein Verzeichnis aufrufe:
http://example.com/verzeichnis//Bei
http://example.com//
schaffe ich es einfach nicht.
Wenn obiges Pattern greift (bin mir da gerade nicht ganz sicher, aber der REQUEST_URI muesste ja eigentlich // lauten) - dann hat $1 wohl keinen Wert. Und kein Wert zwischen zwei Slashes eingesetzt ergibt was ...?
MfG ChrisB
Hi Fritz,
RewriteRule ^(.*[^/])//$ /$1/ [R=301,L]
Bei http://example.com// schaffe ich es einfach nicht.
Das liegt an folgendem Verhalten von RewriteRule, nachzulesen im Apache Manual zu RewriteRule, Abschnitt "Per-directory Rewrites":
When using the rewrite engine in .htaccess files the per-directory prefix
(which always is the same for a specific directory) is automatically removed
for the pattern matching and automatically added after the substitution has
been done.
In deinem Fall, wenn der Request also // lautet, wird der erste Slash nicht mit in die RewriteRule einbezogen. Am einfachsten wäre wohl, wenn du hier noch eine zweite RewriteRule hinzufügst:
RewriteRule ^/$ / [R=301,L]
Eventuell mal mit absoluter URL probieren, falls es so nicht funktioniert.
Viele Grüße,
~ Dennis.