在 apache rewritecond 中实现忽略大小写需使用 [nc] 标志,必须置于条件末尾方括号内,仅对当前条件生效,不可用于 rewriterule 行末或跨条件作用。

在 Apache 的 RewriteCond 中实现忽略大小写,需使用 [NC] 标志(No Case),它必须写在条件末尾的方括号内。
基本写法
语法格式为:
RewriteCond TestString CondPattern [NC]
其中 [NC] 表示不区分大小写匹配。例如:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]→ 同时匹配example.com、EXAMPLE.COM、Example.Com -
RewriteCond %{REQUEST_URI} ^/API/.* [NC]→ 匹配/api/、/Api/、/API/等任意大小写组合
常见误用提醒
[NC] 只作用于当前这一条 RewriteCond,不能跨条件生效;它也不能加在 RewriteRule 上来影响前面的 RewriteCond。
- ✅ 正确:每条需要忽略大小写的条件单独加
[NC] - ❌ 错误:
RewriteCond %{HTTP_HOST} ^example\.com$后面没写[NC],就只匹配小写 - ❌ 错误:
[NC]写在RewriteRule行末 → 对条件无效
搭配正则时注意转义和边界
忽略大小写不等于放宽匹配逻辑。仍需注意:
- 使用
^和$明确首尾,避免部分匹配(如example.com.cn也被误中) - 点号
.要转义为\.,否则会匹配任意字符 - 若条件含多个可能值,建议用
|分隔并统一加[NC],例如:RewriteCond %{HTTP_USER_AGENT} (mobile|android|iphone) [NC]
与 RewriteRule 的 [NC] 区分
RewriteRule 也可以带 [NC],但它只影响规则自身的路径匹配(比如 ^Foo\.php$),不影响 RewriteCond 的判断逻辑。两者互不替代,按需各自添加。










