Apache2 mod_rewrite funktioniert nicht direkt

  • Guten Tag


    Ich habe folgendes Problem. Ich habe in meine .htaccess eine Rule hinzugefügt, damit wenn ein Slash hinzugefügt wird, ein 301er Redirect auf die URL ohne Slash durchgeführt wird. Jedoch wird dann stattdessen der absolute Pfad ab /var/www/ hinten dran geschmissen.


    Die Rule sieht so aus:

    Code
    1. RewriteRule ^register/$ register [R=301]


    Statt das dann register nach der Domain erscheint, erscheint dann eben var/www/virtual/kamisama-subs.de/htdocs/register. Dies passiert auch bei login/, obwohl ich diese Rule bereits entfernt habe. Kann es sein, dass der Slash eine speziell Bedeutung für Apache oder so hat? Bin für jeden Tipp dankbar.


    Freundliche Grüsse

  • In dem regulären Ausdruck fehlt ein Backslash zum Escapen des Slashs.
    Edit: Braucht man doch nicht.


    Eh ich dir jetzt einfach einen Link gebe, gebe ich dir lieber die richtigen Keywords für eine Suchmaschine mit zwei Kreisen im Namen:
    "mod_rewrite remove trailing slash"

  • Vermutlich zielst Du auf duplicate content ab und möchtest das verhindern. Ansonsten wüßte ich nicht, wofür das gut sein sollte.


    Um generell das Backslash zu entfernen, kannst Du folgendes machen:

    Code
    1. RewriteCond %{REQUEST_FILENAME} !-d
    2. RewriteRule ^(.+)/$ /$1 [R=301,L]


    Hierbei mußt Du nicht für jede Möglichkeit eine eigene Regel definieren.

  • Vielen Dank für die Lösung, TPIT-Service. Dein Ratschlag hat zum Erfolg gebracht.


    Bei Dir fehlt nur ein Schrägstrich.

    Code
    1. RewriteRule ^register/$ /register [R=301]


    Dieser Lösungansatz hat man mir bereits vorher über Skype verraten, hat jedoch nichts gewirkt.