Christian Seiler: .htaccess Referrer

Beitrag lesen

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