apache的rewritecond默认区分大小写,需添加[nc]标志实现不区分大小写的正则或字符串匹配,该标志仅作用于当前条件且不可用于rewriterule行。

Apache 的 RewriteCond 默认区分大小写。也就是说,当你用正则表达式匹配字符串(如 %{HTTP_USER_AGENT} 或 %{HTTP_HOST})时,Mozilla/5.0 和 mozilla/5.0 会被视为不同——除非你显式告诉它忽略大小写。
关键:用 [NC] 标志(No Case)
在 RewriteCond 末尾加上 [NC],就能让该条件不区分大小写匹配:
RewriteCond %{HTTP_USER_AGENT} ^mozilla/5\.0 [NC]
RewriteRule ^index\.php$ index.m.php
✅ 这样无论用户代理是 Mozilla/5.0、mozilla/5.0、MoZiLlA/5.0,都会匹配成功。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
⚠️ 注意:
-
[NC]只作用于当前这一条RewriteCond,不是全局设置; - 它只对正则匹配(即
CondPattern部分)生效,不影响TestString的取值方式; - 如果
CondPattern是普通字符串比较(比如用=或!=),[NC]同样有效:
RewriteCond %{HTTP_HOST} =example.com [NC] # 匹配 example.com、EXAMPLE.COM 等
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
不加 [NC] 就是区分大小写(默认行为)
RewriteCond %{HTTP_HOST} ^WWW\.example\.com$
只会匹配全大写的 WWW.example.com,而 www.example.com 或 Www.example.com 不会匹配。
常见误用提醒
-
[NC]不能写在RewriteRule行里影响RewriteCond—— 每个RewriteCond必须单独加标志; - 多个
RewriteCond之间默认是AND关系,每个的[NC]互不影响; - 若同时需要其他标志(如
[OR]),可合并写成[NC,OR]:
RewriteCond %{HTTP_USER_AGENT} android [NC,OR]
RewriteCond %{HTTP_USER_AGENT} iphone [NC]
RewriteRule ^(.*)$ /mobile/$1
不复杂但容易忽略。









