flashman: mode rewrite

Hallo Fachleute,

ich habe mir folgende, einfache mode rewrite Regel geschrieben die auch tadellos funktioniert:

RewriteEngine on
Options +FollowSymlinks
RewriteRule  ^index* index.php

Nun habe ich festgestellt, wenn man versehendlich einen Slash in den Link eingibt, wie:

ind/ex.htm

endet die Anfrage in einer Endlosschleife.

Wie kann ich tun um dieses zu verhindern?

mfg

  1. Moin!

    ich habe mir folgende, einfache mode rewrite Regel geschrieben die auch tadellos funktioniert:

    Naja...

    Die Direktive "Options" gehört nicht zum Rewriting. Sie stört an dieser Stelle zwar nicht, aber hat mit deinem Problem nichts zu tun.

    RewriteEngine on
    RewriteRule  ^index* index.php

    Deine Rewrite-Regel sagt: Suche in der angeforderten URL, ob die ganz am Anfang mit "inde" beginnt, und danach eventuell noch mit einem oder beliebig vielen x weitergeht. Was dann noch kommt, ist nicht weiter wichtig. Verändere diese URL dann zu "index.php", und mach mit der nächsten Rewrite-Regel weiter bzw. setze die Ausführung des Requests dann halt mit der neuen URL weiter fort.

    Nun habe ich festgestellt, wenn man versehendlich einen Slash in den Link eingibt, wie:

    ind/ex.htm

    endet die Anfrage in einer Endlosschleife.

    Bist du sicher, dass exakt DIESE URL das geschilderte Problem verursacht? Ich würde ja tippen, dass der Slash ein Zeichen später kommen muss:
    inde/x.htm

    Diese URL passt exakt auf dein beschriebenes Muster: Sie startet mit "inde", und dann kommt kein "x". Das wird dann zu "index.php".

    In welcher Art von Endlosschleife endet das denn? Ständige Redirects, oder hängt mod_rewrite fest?

    - Sven Rautenberg

    1. Hallo,

      danke für die Antwort.

      Der Fehler lag wo anders.

      Für den Fall das jemand eine ungültige Adresse angibt hatte ich eine Umleitung zur Fehlerseite bzw. bei index/ zur Startseite mit ./

      Das ergab dann die Endlosschleife oder Weiterleitung

      index/././././ usw.

      Ich habe dann in der Weiterleitung anstelle von ./ einfach http://www.meinedomain.de genommen.

      mfg

      1. Moin!

        Für den Fall das jemand eine ungültige Adresse angibt hatte ich eine Umleitung zur Fehlerseite bzw. bei index/ zur Startseite mit ./

        Das ergab dann die Endlosschleife oder Weiterleitung

        index/././././ usw.

        Ich habe dann in der Weiterleitung anstelle von ./ einfach http://www.meinedomain.de genommen.

        Das ist aber eher schlecht.

        Wenn eine Seite nicht existiert, sollte die Welt das durch HTTP-Statuscode 404 erfahren.

        Durch die Angabe einer absoluten URL erzeugst du aber stattdessen einen echten HTTP-Redirect mit Status 302.

        Suchmaschinen prüfen mittlerweile explizit, was ein Server bei nichtexistierenden Seiten zurückgibt. Wenn sie 404 entdecken, vertrauen sie den erhaltenen Redirects mehr, als wenn sie für jegliche URL nur einen Redirect erhalten.

        - Sven Rautenberg