我正在尝试强制 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] 冲突参数“/gites/”在 /home/xxx/conf/web/chambres.com.extra/links.map:107
当我测试它时,果然,小写的有效,但大写的“Gites”无效。我怎样才能使它不区分大小写?
nginx
map
指令确实被记录为进行不区分大小写的字符串匹配。如果这在您的情况下实际上是一个问题(即您需要不同的结果
/gites/
和/Gites/
),那么您可以使用正则表达式匹配,它可以区分大小写或不区分大小写。所以你可以匹配:
请记住,只有在映射中没有纯字符串值匹配时才会检查正则表达式。
如果您不需要为每个字符串提供不同的结果,那么您无需执行任何操作。一个字符串匹配将涵盖所有情况。