为何屏蔽特定User Agent的htaccess规则导致服务器崩溃?
问题排查与修复方案
核心错误原因
你的.htaccess代码存在语法解析错误,直接引发了500内部服务器错误:
<IfModule mod_rewrite.c>标签未正确闭合,代码里的#</IfModule>把闭合标签注释掉了,导致服务器无法识别规则块的结束位置,触发解析失败。
额外优化点
另外你的正则表达式里,AhrefsBot前面多了一个空格——这不会导致500错误,但可能让规则无法精准匹配目标UA,建议一并移除。
修正后的完整规则
# Block via User Agent <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*(PetalBot|BlexBot|SemrushBot|MJ12Bot|DotBot|AhrefsBot|DataForSeoBot|Go-http-client).*$ [NC] RewriteRule .* - [F,L] </IfModule>
验证步骤
- 将修正后的规则替换到
.htaccess文件中 - 用自身浏览器访问网站,确认正常加载
- 可通过curl命令模拟目标UA测试拦截效果:
正常情况会返回403 Forbidden状态码。curl -A "PetalBot" https://你的域名.com
内容的提问来源于stack exchange,提问作者David Kudler
相关产品推荐
相关产品推荐

