我正在尝试根据 Web 请求是否包含任何一组字符串来阻止它们。据我所知,在我自己的知识和网上搜索之间,我所拥有的是正确的。但是,我仍然在访问日志中看到这些类型的请求。
如果请求在 Apache 配置中被阻止,是否仍会创建访问日志条目?还是我在 VHOST 定义中的定义有误?
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_USER_AGENT} ^.*(icevikatam|AhrefsBot|spbot|MJ12|majestic12|Ahrefs).*$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(Semrush|SISTRIX|80legs|HTTrack|Xenu|dataprovider).*$ [NC]
RewriteRule .* - [F,L]
我的 Web 服务器是用于 IBM i 的 Apache 2.4。
是的,但是,它们应该被记录为 403(禁止) - 鉴于
RewriteRule
上面发布的内容。你的 mod_rewrite 规则看起来不错,除了一些小的调整......
如果您只想在字符串中的任何位置匹配这些单词,则不需要
^.*
and锚点。上面和简单的一样:.*$
该
F
标志也暗示该L
标志,因此L
此处不需要显式标志。