rewritecond %{http_user_agent} "pattern" [flags] 是匹配 user-agent 的标准写法,需用双引号包裹模式、常用 [nc] 忽略大小写,配合 rewriterule 可实现拦截([f])或重定向([r=302,l])。

匹配 User-Agent 主要用 RewriteCond 指令配合 %{HTTP_USER_AGENT} 变量,注意大小写不敏感、支持正则、需用引号包裹模式。
基本语法格式
标准写法是:
RewriteCond %{HTTP_USER_AGENT} "pattern" [flags]-
%{HTTP_USER_AGENT}是 Apache 预定义变量,对应请求头中的User-Agent字段 - 模式(pattern)推荐用双引号包裹,避免空格或特殊字符解析错误
- 常用 flag 是
i(忽略大小写),因为 UA 字符串大小写混杂很常见
常见匹配示例
屏蔽某类爬虫:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
RewriteCond %{HTTP_USER_AGENT} "Baiduspider|YisouSpider" [NC]-
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/5\.0.*\bChrome\b" [NC]—— 匹配含 Chrome 的 UA(\b表示词边界,防误匹配如 “Chromium”) -
RewriteCond %{HTTP_USER_AGENT} "^$" [NC]—— 匹配空 UA(常用于拦截恶意扫描)
注意事项
实际使用时容易出错的点:
- 不要漏掉
[NC]或[i],否则curl和Firefox这类大小写混合的 UA 很可能不匹配 - 正则中特殊字符如点
.、括号()、竖线|要转义,除非你明确需要正则功能 - 如果只做简单子串匹配,可用
-f或-n等字符串操作符,但%{HTTP_USER_AGENT}不支持-f(文件检测),仅支持正则匹配 - 多个条件组合时,用
[OR]显式声明逻辑或,否则默认是 AND
结合 RewriteRule 使用
典型用法是拦截或重定向特定 UA:
- 拒绝访问:
RewriteRule ^ - [F](返回 403) - 跳转到提示页:
RewriteRule ^ /blocked.html [R=302,L] - 注意加
[L]终止后续规则,避免意外覆盖










