rolf: htaccess RewriteRule dauerlauf für weiterleitung

Beitrag lesen

Hallo Götz + Bob,

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.

Ja die hab ich auch durchgelesen, bin aber nicht schlauer geworden.

/* 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 /(.*).

geht nicht, hab dann
RewriteRule /(.*).* http://www.meinedomain.de/index.html [R,L]
probiert was den selbigen effekt hatte wie z.b. auch
RewriteRule ^.*$ http://www.meinedomain.de/index.html [R,L]
einen abruch der übertragung und ne leere seite.
In der statuszeile vom browser sah ich, dass er immer wieder versuchte zu verbinden.
Habe dann auf eine andere domain umgeleitet, was dann funktionierte.
Auf die eigene domain weiter zu leiten geht mit dem refer nicht.

@Bob, wenn ich ein [OR] weglasse also z.B. so
RewriteEngine on
RewriteCond %{HTTP_REFERER} bösedomain.com [OR]
RewriteCond %{HTTP_REFERER} bösedomain.net [OR]
RewriteCond %{HTTP_REFERER} bösedomain.ru
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^.*$ http://www.meinedomain.de/index.html [R,L]

dann gehts auch nicht, er leitet nicht weiter zeigt stattdessen die angeforderte datei zumindest wenn der referer von bösedomain.ru kommt.

[...] ^(.*).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

warum die klammern?

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 (.*).

ich dachte (.*).*

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.

hab ich, keine fehlermeldung diesbezüglich.
Hab das ganze auch auf meinem anderen server apache 2.xxx versucht , der reagiert auch so. Scheint also was falsch zu sein, aber nicht am server :-)
Grüsse
Rolf