有人可以告诉我如何使用apache2 mod rewrite或任何其他方法阻止以下用户代理,
wait for condition
答案 0 :(得分:0)
要使用mod_rewrite阻止Apache vHost中的特定用户代理,您可以执行以下操作:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/A1E1"
RewriteRule . - [F]
对于来自该确切用户代理的任何请求,这将禁止403。
通过在 CondPattern (RewriteCond
指令的第二个参数)前面加上=
,使其成为字典字符串比较(即精确匹配),而不是正则表达式。因为我们要匹配的字符串包含空格,所以必须在双引号周围
F
标志等效于R=403
。不需要L
标志,因为它返回非3xx(或2xx)状态时会被暗示。
更新:我们是否可以添加通配符条目,例如
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/A1E1
的最后一部分不断更改/A1E1
是的,但是您需要将上述 CondPattern 更改为正则表达式。
例如:
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/5\.0 (Windows NT 6\.1; WOW64; rv:63\.0) Gecko/20100101 Firefox/"
以上内容与开始 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/
的所有用户代理匹配,因此保留了user-agent变量的结尾。
请注意,由于现在这是一个正则表达式,因此任何特殊的正则表达式元字符都需要反斜杠转义。在此示例中,这似乎只是点(.
)。周围的双引号仍然可以用来避免必须转义空格。