作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图阻止访问此访问我的用户代理:Mozilla/5.0 (compatible; Seekport Crawler; http://seekport.com/
(最后没有 )
,这不是故障)。
我试过这个(还有两个代理)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} OnalyticaBot [NC, OR]
RewriteCond %{HTTP_USER_AGENT} Re-re Studio (+http://vip0.ru/) [NC, OR]
RewriteCond %{HTTP_USER_AGENT} Mozilla/5.0 (compatible; Seekport Crawler; http://seekport.com/ [NC]
RewriteRule .* - [F,L]
我已经用这个语法尝试了更多(使用整个字符串并且只使用“Seekport”),但仍然看到代理用户在日志中要求
RewriteCond %{HTTP_USER_AGENT} ^.(user_agent1|user_agent2).$ [NC]
你可以帮帮我吗?
最佳答案
RewriteCond %{HTTP_USER_AGENT} Re-re Studio (+http://vip0.ru/) [NC, OR]
RewriteCond
的第二个参数指令是正则表达式(regex),因此任何元字符(例如
+
和
.
)都需要正确转义。但重要的是,空格是 Apache 配置文件中的分隔符,因此这些也需要转义,否则,该指令将完全无效。在 Apache 上,由于“错误的标志分隔符”,上述内容将导致 fatal error (500 Internal Server Error)。在 LiteSpeed 上,它只会默默地失败。
\
在 hello\ world
\s
表示任何空白字符的速记字符类。例如。 hello\sworld
. "hello world"
. [NC, OR]
- 但是,标志分隔符参数中不应有空格。这应该是
[NC,OR]
(没有空间)。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} OnalyticaBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Re-re Studio (\+http://vip0\.ru/)" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/5\.0 (compatible; Seekport Crawler; http://seekport\.com/$" [NC]
RewriteRule ^ - [F]
正则表达式
.*
在
RewriteRule
模式可以简化为
^
(效率更高)和
L
使用
F
时不需要标志——这是暗示。
=
(相等的字典字符串比较)前缀运算符(与双引号一起)在 CondPattern 上测试精确匹配。
RewriteCond %{HTTP_USER_AGENT} "=This is the exact user-agent I want to block"
RewriteRule ^ - [F]
在上面的例子中,字符串
This is the ... block
是一个普通的字符串,而不是一个正则表达式。
关于.htaccess - 如何在 htaccess 中使用 mod_rewrite 阻止用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66137651/
我是一名优秀的程序员,十分优秀!