Jan: .htaccess Referrer

Hallo zusammen,

ich habe eine Verständnisfrage:

folgendes steht in einer .htaccess Datei,

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://.*meinedomain.de.*$ [NC]
RewriteRule ^(.*)$ http://voandershin.de/ [R,L]

wenn ich das doch jetzt richtig verstehe, werden alle "Referrer"  die NICHT von meinedomain.de kommen zu voandershin.de weitergeleitet.

Oder ist da ein "Denk"-Fehler?

Gruß Jan

  1. Hallo Jan,

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://.*meinedomain.de.*$ [NC]
    RewriteRule ^(.*)$ http://voandershin.de/ [R,L]

    wenn ich das doch jetzt richtig verstehe, werden alle "Referrer"  die NICHT von meinedomain.de kommen zu voandershin.de weitergeleitet.

    Mehr oder weniger, ja.

    Ich drösele das mal auf:

    | RewriteCond %{HTTP_REFERER} !^$

    Wenn der Referer NICHT leer ist *UND*

    | RewriteCond %{HTTP_REFERER} !^http://.*meinedomain.de.*$ [NC]

    wenn der Referer NICHT mit http:// anfängt und IRGENDWO 'meinedomain', gefolgt von einem beliebigen Zeichen, gefolgt von 'de' enthält, *DANN*

    | RewriteRule ^(.*)$ http://voandershin.de/ [R,L]

    leite auf http://voandershin.de/ um.

    Das liest sich jetzt vermutlich etwas verwirrend, das liegt aber daran, dass der reguläre Ausdruck vermutlich nicht das gewünschte ist. Wenn Du alle Requests von Deiner Domain als Referer zulassen willst (+ leere Referer[1]), den Rest jedoch nicht, dann ist folgender Code korrekt:

    RewriteEngine on  
    RewriteCond %{HTTP_REFERER} !^$  
    RewriteCond %{HTTP_REFERER} !^http://([^/]+\.)?meinedomain\.de(:[0-9]+)?(/|$) [NC]  
    RewriteRule ^(.*)$ http://voandershin.de/ [R,L]
    

    Das sorgt dafür, dass alle Subdomains von "meinedomain.de" als zulässiger Referer erkannt werden, genauso "meinedomain.de" alleine, dazu mögliche Port-Angaben und auch leere Referer. Alles andere wird dann umgeleitet auf http://voandershin.de/ ("wo" schreibt man übrigens mit "w" nicht mit "v" ;-)).

    Viele Grüße,
    Christian

    [1] Passiert z.B. wenn man die Adresse direkt aufruft in der Browserzeile oder wenn der Browser prinzipiell gar keinen Referer sendet (kann man in einigen Konfigurieren).

    1. Hallo,

      ertsmal vielen Dank für deine ausführliche Antwort,

      ich habe nun die .htacces Datei mittels FTP hochgeladen. (Webseite1)

      Nun habe ich einen Link von einer anderen Webseite (Webseite2 anderer Server) auf Webseite1 gelegt. Webseite2 habe ich nun für meinedomain.de aus dem Beispiel in die .htaccess Datei geschrieben, nun müsste es doch so sein, das wenn ich auf den Link von Webseite2 klicke nicht nach Woandershin.de weitergeleitet werden sollte.

      Bei mir wird aber nur ein Fehler 403 angezeigt.

      Ich habe die Vermutung das die .htacces Datei gar nicht richitg "funktioniert"...

      Gruß Jan

      1. Hallo Jan,

        Nun habe ich einen Link von einer anderen Webseite (Webseite2 anderer Server) auf Webseite1 gelegt. Webseite2 habe ich nun für meinedomain.de aus dem Beispiel in die .htaccess Datei geschrieben, nun müsste es doch so sein, das wenn ich auf den Link von Webseite2 klicke nicht nach Woandershin.de weitergeleitet werden sollte.

        Wenn Du alles richtig gemacht hast: ja. Im Zweifel: Konkreten Code und Link zu den relevanten Seiten zeigen, damit man sich ein GENAUES Bild machen kann.

        Bei mir wird aber nur ein Fehler 403 angezeigt.

        Fehler 403 deutet darauf hin, dass

        a) entweder keine Indexseite definiert ist und Listings ausgeschaltet sind
         b) oder mod_rewrite geladen ist, aber Options +FollowSymLinks oder
            +SymLinksIfOwnerMatch nicht aktiviert ist

        Du kannst im Falle b) mal versuchen, in die .htaccess noch ein

        Options +SymLinksIfOwnerMatch

        zu schreiben - allerdings kann Dir das durchaus einen 500 Internal Server Error produzieren, denn AllowOverride Options ist oft genug deaktiviert. In dem Fall müsstest Du mal mit Deinem Serveradmin sprechen, dass er Options +SymLinksIfOwnerMatch setzt, damit mod_rewrite funktioniert.

        Viele Grüße,
        Christian

      2. Hi,

        Ich habe die Vermutung das die .htacces Datei gar nicht richitg "funktioniert"...

        Bedenke auch, daß *keineswegs* jeder User im Referrer die anscheinend von dir erwarteten Daten sendet! Dort kann auch eine beliebige Zeichenfolge (also kein URL) oder prinzipiell immer ein fremder URL gesendet werden (z.B. der URL des Anonymisierungstools).

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!