我正在尝试强制 URL 指向新位置。例如:
- site.com/Gites/
- site.com/gites/
我目前在网站上设置了一个“地图”:
map $uri $is_rewrite {
default no_redirect;
include /home/xxx/conf/web/chambres.com.extra/links.map;
}
...并且该文件中有一条规则:
/gites/ https://$http_host;
#/Gites/ https://$http_host;
/french/Gites/ https://$http_host;
如果我取消注释第二行,就会出现错误!
nginx:[emerg] /home/xxx/conf/web/chambres.com.extra/links.map:107 中的参数“/gites/”存在冲突
当我测试它时,小写字母确实有效,但大写字母“Gites”无效。我怎样才能让它不区分大小写?
答案1
nginxmap
指令确实有记录显示进行不区分大小写的字符串匹配。
字符串匹配时忽略大小写。
如果这确实是您遇到的问题(即您需要/gites/
和的不同结果/Gites/
),那么您可以使用正则表达式匹配,它可以区分大小写也可以不区分大小写。
正则表达式应该从
“~”
区分大小写的匹配的符号开始,或者“~*”
从不区分大小写的匹配的符号 (1.0.4) 开始。
因此你可以改为匹配:
~^/gites/ https://one;
~^/Gites/ https://two;
请记住,仅当映射中没有纯字符串值匹配时才会检查正则表达式。
如果您不需要每个字符串都有不同的结果,那么您不需要做任何事情。一次字符串匹配将涵盖所有情况。