如何在.htaccess文件中屏蔽referral站点blogarama.com?
屏蔽blogarama.com垃圾流量的重写规则说明
你给出的规则不可行,问题出在两处:
- 第二个
RewriteCond里包含了HTML标签(<a href="http://www.blogarama.com" rel="nofollow noreferrer">www.blogarama.com</a>),而HTTP_REFERER是HTTP请求头,只会包含纯文本的URL,不会有HTML代码,这个条件永远无法匹配。 - 第一个条件末尾的
OR会导致逻辑错误——如果最后一个条件带OR,规则会匹配所有请求(因为没有后续条件约束)。
正确的Apache重写规则
RewriteEngine on RewriteCond %{HTTP_REFERER} blogarama\.com [NC] RewriteRule .* - [F]
规则说明
[NC]:不区分大小写,覆盖BlogArama.com这类大小写变体的请求- 转义
\.:正则表达式中.匹配任意字符,必须转义才能精准匹配域名里的点 [F]:直接返回403 Forbidden状态码,拒绝所有来自包含blogarama.com域名的referer请求- 无需单独指定
www.blogarama.com:该规则会自动匹配所有包含blogarama.com的子域名(包括www)
扩展:屏蔽多个垃圾域名
如果还有其他垃圾流量来源,可以添加多个RewriteCond,用[OR]分隔(注意最后一个条件不要加OR):
RewriteEngine on RewriteCond %{HTTP_REFERER} blogarama\.com [NC,OR] RewriteCond %{HTTP_REFERER} spam-domain\.com [NC] RewriteRule .* - [F]
内容的提问来源于stack exchange,提问作者Akash Bangare
相关产品推荐
相关产品推荐

