Auf grund massivem Refererspam von russischen Seiten möchte ich gerne alle Besucher die laut Referer von *.ru Seiten kommen per .htaccess sperren.
Und Du glaubst nicht, dass es auch (vermeintlich) russische Seiten gibt, die eine Daseinsbereichtigung haben?
Leider blockiert das Script von Wikipedia alle Besucher
RewriteEngine on
RewriteCond %{HTTP_REFERER} .ru [OR]
RewriteRule .* - [forbidden,last][
Du blockiert alle Aufrufe von einem referer, der
. ein beliebiges Zeichen
r gefolgt von einem r
u gefolgt von einem u
[or] oder (Was oder?) Wenn Du keine Bedingung formulierst, dann ist das wahr.
Schon wegen dem [or] werden allebesucher blockiert, Du würdest aber auch Besucher, die von einem Link auf Deiner eigenen Seite kommen, wenn deren URL http://exemple.com/wolfsrudel.html wäre.
Während ein anderes Script die Bots trotzdem nicht blockt:
RewriteCond %{HTTP_REFERER} ^http://.*.[ru]/ [NC,OR]
RewriteRule .* - [F,L]
Du blockiert alle Aufrufe von einem referer, der
^http:// mit http:// beginnt, worauf
.* beliebige Zeichen folgen, danach
. ein Punkt
[ru] gefolgt von einem r ODER einem U (also NICHT wie gedacht r, gefolgt von u), gefolgt von
/ Slash
Das würde also Aufrufe mit einem Referer blocken, die von
http://example.r/
http://example.u/
kommen. Nicht jedoch von http://example.u/
Was mach ich falsch?
1. Hilfreichere Antwort:
Genau genommen solltest Du Dein Vorgehen genauer überlegen. Solltst Du entgegen jeder Vernunft und meines als Frage formulierten Argumentes beim Blockieren via .htaccess bleiben wollen, dann wirst Du Dich mit regulären Ausdrücken befassen müssen. Ich hoffe aber, Du hast Dich anders entschieden.
Eigentlich willst Du ja Bots blocken. Versuche andere Merkmale zu finden (deren IP-Adressen, als was für ein User-Agent geben die sich aus etc. Da finden sich Merkmale. Außerdem benutzt Du wahrscheinlich etwas wie Wordpress. Sicherlich gibts für Deine Software eine Erweiterung, die solchen Spam besser blockt als Du es gegenwärtig hinbekommen würdest.
2. Deutlich weniger hilfreichere Antwort:
Ganz grob gesagt, Du wolltest eigentlich etwas wie z.B.
RewriteCond %{HTTP_REFERER} ^http://.*.ru/
RewriteRule .* - [forbidden,last]
Ich hoffe, das ist nur fürs Archiv un nicht für Deine .htaccess.
Jörg Reinholz