apache可通过配置直接拦截特定user-agent并返回403 forbidden,不跳转、不重写;主流方式有两种:一是.htaccess规则(rewritecond+rewriterule [f]),适用于共享主机;二是httpd.conf中setenvifnocase配合require not env badbot,适用于独立服务器。

直接在 Apache 配置中拒绝特定 User-Agent,核心是识别 UA 字符串并返回 403 状态码,不跳转、不重写。两种主流方式适配不同权限环境,效果明确、部署简单。
用 .htaccess 文件拦截(适合共享主机)
无需服务器权限,修改即生效(前提是 AllowOverride All 已启用):
- 在网站根目录编辑或新建
.htaccess - 加入以下规则(示例屏蔽常见恶意 UA):
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (FeedDemon|AhrefsBot|MJ12bot|EasouSpider|ZmEu|oBot|Python-urllib|HttpClient|heritrix|TomatoBot|EmbeddedWB|QunarBot) [NC]
RewriteRule ^ - [F]
说明:[NC] 表示忽略大小写;^ 匹配任意请求路径,确保全站生效;[F] 直接返回 403 Forbidden,不产生日志跳转或页面重定向。
在 httpd.conf 或虚拟主机配置中拦截(推荐 VPS/独立服务器)
性能更好、更稳定,适用于有 root 权限的环境:
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
- 定位到对应站点的
<directory></directory>块内(如/var/www/html) - 添加如下配置(Apache 2.4+ 推荐用
Require指令):
<directory>
SetEnvIfNoCase User-Agent "^(FeedDemon|AhrefsBot|MJ12bot|ZmEu|oBot|QunarBot)" BADBOT
<requireall>
Require all granted
Require not env BADBOT
</requireall></directory>
注意:Apache 2.4 起已弃用 Order Allow,Deny,必须用 <requireall></requireall> 包裹;SetEnvIfNoCase 支持正则,开头加 ^ 可避免子串误匹配(比如只匹配以该 UA 开头的请求)。
怎么选 UA 字符串?实用建议
别凭空猜测,从真实访问日志里提取最有效:
- 查
access.log,筛选高频、无 referer、大量 404 或扫描路径(如/wp-admin/、/checkcode.php)的 UA - 警惕明显异常的 UA:Windows 98、空 UA(
^$)、含curl/HttpClient/python-requests的自动化工具标识 - 可先用
.*curl.*或^.*python.*测试,再逐步收紧为精确前缀匹配
验证是否生效
部署后快速确认:
- 用 curl 模拟被禁 UA:
curl -A "AhrefsBot/7.0" https://yoursite.com/,应返回 HTTP 403 - 检查 Apache 错误日志:
tail -f /var/log/apache2/error.log,正常不会报错,但访问日志中对应 UA 请求状态码应为 403 - 避免把合法 UA(如 Chrome、Firefox)写进规则——测试时可用
-A "Firefox/120.0"对照验证









