mode rewrite
flashman
- webserver
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
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
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
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