Götz: htaccess RewriteRule dauerlauf für weiterleitung

Beitrag lesen

Hallo rolf,

RewriteEngine on
RewriteCond %{HTTP_REFERER} bösedomain.com [OR]
RewriteCond %{HTTP_REFERER} bösedomain.net [OR]
RewriteCond %{HTTP_REFERER} bösedomain.ru [OR]
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule /* http://www.meinedomain.de/index.html [R,L]

Die RewriteRule dürfte so eigentlich nicht korrekt sein, denn die wird ja durch einen regulären Ausdruck beschrieben, siehe auch Apache Module mod_rewrite RewriteRule Directive.
/* würde also auf _ (nichts), /, //, ///, ///, ... matchen - und sonst auf nichts. Und das ist nach Deinen Beschreibungen nicht das, was Du willst. Du willst vermutlich eher /(.*).

Wenn ich eine beliebigen nicht existierenden namen bzw. ne datei auf meinem server aufruf der nicht existiert, dann leitet er es korrekt auf die index.html seite

Warum er das tut wundert mich jetzt, aber egal ... ah ok, kurz nachgelesen, das macht also diese !-s.

wenn aber der refferer von bösedomain.com kommt, dann scheint er in einen dauerlauf zu kommen bis er (browser+server) schliesslich abbricht.

Könnte es eventuell am rewriterule liegen? Müssen es 2 Rewrite rules sein, auch wenn bei allen 4 möglichkeiten dasselbe getan werden müsste?

Nein, eine Regel sollte reichen, nur scheint mir die Regel nicht ganz korrekt zu sein.
Du könntest aber die RewriteConds für den Referrer auf eine verkürzen, indem du ((domain1.tld)|(domain2.tld)|(domain3.tld)) schreibst, aber das dürfte nicht das Problem hier sein.

[...] ^(.*).htm$ $1.html. Gehts vielleicht einfacher als mit den x-beliebigen zeichen? [...]

Naja so kompliziert ist das nun auch nicht. ^ markiert den Anfang des Strings, (.*) ein beliebiges Zeichen, das keinmal oder beliebig oft vorkommt auf das ein .htm folgt, $ markiert das Ende des Strings und $1.html schreibt eben (.*) vor .html - aber müßten da nicht die "." escaped werden? Und wenn du auf "x-beliebige Zeichen" matchen willst, muß Dein Pattern eben auch "x-beliebige Zeichen" zulassen, also (.*).

Wo genau Dein Fehler liegt konnte ich Dir jetzt zwar nicht sagen, aber zumindest konnte ich Dir sagen, daß Deine RewriteRule wohl nicht den Ausdruck beschreibt, den Du beschreiben willst.

Schonmal ins Error-Log geschaut? Da stehen manchmal hilfreiche Meldungen drin, vor allem auch bei mod_rewrite-Fehlern.

Grüße aus Karlsruhe,
Götz

--
Losung für Mittwoch, 6. September 2006
Des Menschen Geist muss davon, und er muss wieder zu Erde werden; dann sind verloren alle seine Pläne. (Psalm 146,4)
Selig sind die Toten, die in dem Herrn sterben von nun an. Ja, spricht der Geist, sie sollen ruhen von ihrer Mühsal; denn ihre Werke folgen ihnen nach. (Offenbarung 14,13)
(Losungslink)