我尝试根据网络请求是否包含一组字符串来阻止它们。据我所知,根据我自己的知识和在线搜索,我所得到的是正确的。但是,我仍然在访问日志中看到这些类型的请求。
如果请求在 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。
答案1
如果请求在 Apache 配置中被阻止,是否仍会创建访问日志条目?
是的,但是,根据上述内容,它们应该被记录为 403(禁止)RewriteRule
。
您的 mod_rewrite 规则看起来不错,除了一些小调整......
^.*(icevikatam|AhrefsBot|spbot|MJ12|majestic12|Ahrefs).*$
如果你只是想匹配这些词,你不需要^.*
and锚点.*$
任何地方在字符串中。上面的内容与以下内容相同:
(icevikatam|AhrefsBot|spbot|MJ12|majestic12|Ahrefs)
RewriteRule .* - [F,L]
旗帜F
暗示该L
标志也是如此,因此L
这里不需要明确的标志。