根据部分用户代理string阻止networking请求 – 不工作

我试图阻止networking请求的基础上,如果他们包含任何一组string。 就我自己的知识和网上search而言,我所知道的是正确的。 但是,我仍然在访问日志中看到这些types的请求。

如果请求在Apacheconfiguration中被阻塞,访问日志条目是否还会被创build? 或者是我在我的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。

如果请求在Apacheconfiguration中被阻塞,访问日志条目是否仍然被创build?

是的,但是,他们应该被logging为403(禁止) – 考虑到上面提到的RewriteRule

你的mod_rewrite规则看起来不错,除了一些小的调整…

 ^.*(icevikatam|AhrefsBot|spbot|MJ12|majestic12|Ahrefs).*$ 

如果您只想匹配string中的任何字符,则不需要^.*.*$锚点。 以上就是简单的说:

 (icevikatam|AhrefsBot|spbot|MJ12|majestic12|Ahrefs) 
 RewriteRule .* - [F,L] 

F标志也意味着 L标志,因此这里不需要明确的L标志。