I'm trying to force a URL to point to a new location. For example:
- site.com/Gites/
- site.com/gites/
I currently have a "map" set up on the site:
map $uri $is_rewrite {
default no_redirect;
include /home/xxx/conf/web/chambres.com.extra/links.map;
}
…and inside that file, one of the rules is:
/gites/ https://$http_host;
#/Gites/ https://$http_host;
/french/Gites/ https://$http_host;
If I uncomment the 2nd line, I get an error!
nginx: [emerg] conflicting parameter "/gites/" in
/home/xxx/conf/web/chambres.com.extra/links.map:107
When I test it, sure enough, the lowercase one works, but not the uppercase "Gites". How can I make it case insensative?
Best Answer
The nginx
map
directive is indeed documented as doing case-insensitive string matching.If this is actually a problem in your case (i.e. you need different results for
/gites/
and/Gites/
) then you can use a regular expression match, which can be either case sensitive or insensitive.So you could match instead:
Keep in mind that regular expressions are only checked if there are no plain string value matches in the map.
If you don't need different results for each string, then you don't need to do anything. One string match will cover all cases.