最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx Rewrite 规则中忽略大小写如何配
时间:2026-08-17 18:26:49 编辑:袖梨 来源:一聚教程网
Nginx rewrite规则忽略大小写需在分号前添加i标志,如rewrite ^/old/(.)$ /new/$1 permanent; i;,不可写在正则内或中间;location可用~提前不区分匹配,再配合rewrite处理。
在 Nginx 的 rewrite 规则中,默认是区分大小写的。若需忽略大小写(即不区分大小写匹配),需在正则表达式末尾添加 i 标志。
rewrite 规则中添加 i 标志
Nginx 使用 PCRE 正则引擎,支持在正则末尾加 i 实现忽略大小写匹配。这是最直接有效的方式。
- 语法格式:
rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;→ 区分大小写 - 忽略大小写写法:
rewrite ^/oldpath/(.*)$ /newpath/$1 permanent; i;(注意末尾的i;) -
i必须紧接在分号前,且单独成段,不能写在正则内部(如(?i)不被 Nginx rewrite 支持)
location 块中配合使用更灵活
如果重写逻辑较复杂,建议结合 location ~* (~* 表示不区分大小写的正则匹配)来提前捕获 URL,再用 rewrite 处理:
location ~* ^/ABC/(w+)$ { rewrite ^/ABC/(.*)$ /abc/$1 permanent; }- 这里的
~*已让 location 匹配忽略大小写,后续 rewrite 可按需写,无需再加i - 适合需要统一处理多种大小写变体(如
/PAGE、/page、/Page)的场景
注意 rewrite 指令的作用域和执行顺序
rewrite 指令在 server 或 location 块中生效,且按书写顺序执行。忽略大小写只影响当前这条规则的匹配,不影响其他规则:
- 多个 rewrite 规则时,每条需单独加
i(如果都需要忽略大小写) - 若在 if 块中使用 rewrite,同样适用
i标志,但应避免滥用 if(Nginx 最新不推荐在 location 外使用 if) - 测试时可用
curl -I http://domain/OLDPATH验证是否 301/302 跳转成功,确认大小写变体是否都命中
常见错误与验证方法
容易出错的地方包括标志位置错误、混淆 ~ 和 ~*、或误用 PCRE 内置标志:
- ✘ 错误写法:
rewrite ^(?i)/old/(.*)$ /new/$1 permanent;(Nginx 不识别(?i)) - ✘ 错误写法:
rewrite ^/old/(.*)$ /new/$1 i permanent;(i不能插在中间) - ✔ 正确写法:
rewrite ^/old/(.*)$ /new/$1 permanent; i; - 修改配置后务必运行
nginx -t检查语法,再nginx -s reload生效