Willi: Kleines Problem mit RewriteRule

Hallo!

Ich habe ein kleines Problem mit RewriteRule
Hier ist erst einmal das was ich in der htaccess stehen habe

------------------
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.sonstwo.de/.*$ [NC]
RewriteRule ^(.+)$ http://www.sonstwo.de/verzeichniss_a/verzeichnis_b/index.html [R,L]
------------------

Die htaccess befindet sich in dem Verzeichnis verzeichniss_b
Jetzt soll, wenn von einer anderen Seite auf eine Datei in dem Verzeichnis verzeichnis_b zugegriffen mit RewriteRule auf die Index- Datei in dem Verzeichnis weitergeleitet werden, aber irgendwie scheint der dann immer in einer Endlosschleife zu stecken. Weil wenn ich auf eine andere Datei oberhalb von verzeichnis_b weiterleite dann klappt das ganze.

Wo liegt jetzt der Fehler? Wäre schön wenn mich mal einer aufklären könnte.

Danke

  1. Hi,

    Wo liegt jetzt der Fehler?

    im Verhalten der Clients bezüglich des Referers. Wobei man das kaum als Fehler bezeichnen kann, wohl aber als Ursache. Wer sich auf den Referer verlässt, ist eh verlassen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Moin!

    Hier ist erst einmal das was ich in der htaccess stehen habe


    RewriteEngine on
    Options +FollowSymLinks
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://www.sonstwo.de/.*$ [NC]
    RewriteRule ^(.+)$ http://www.sonstwo.de/verzeichniss_a/verzeichnis_b/index.html [R,L]

    Du schreibst _alles_, was die RewriteRule erreicht, genau dann um, wenn der Referrer entweder leer oder "falsch" ist, indem du ein Redirect auf die Index-Seite im Verzeichnis B ausgibst.

    Dadurch, dass die .htaccess sich in Verzeichnis B befindet, wird sie nur wirksam für Dateien, die sich in Verzeichnis B befinden.

    Aber da das Redirectziel sich auch in Verzeichnis B befindet, fällt "index.html" in diesem Verzeichnis auch unter die Redirect-Rule. Offenbar ist es so, dass ein weitergeleiteter Request immer noch mit dem gleichen Referrer arbeitet, nicht mit dem der zuerst angeforderten Seite - was durchaus sinnvoll ist.

    Du hast dir also eine schöne Endlosschleife gebastelt.

    Und damit sollte die Abhilfe eigentlich auch klar werden, wobei du natürlich mehrere Möglichkeiten zum Eingriff hast.

    - Sven Rautenberg

    --
    "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)