Nginx rewrite with if statement
We have CSS file "development.css", but for IE users I need to redirect them to "production.css" instead. There's a location rule for that:
location = /css/development.css {
if ($http_user_agent ~* 'Trident') {
rewrite ^(.*)$ /css/production.css redirect;
}
}
The redirect works for IE correctly, but for all other browsers it's 404. Nginx's "if" doesn't have "else"; what is the correct way to handle ifs with rewrite?
Solution 1:
I recommend you to use nginx map. Something like this (written in the browser, not tested):
map $http_user_agent $envtype {
default "production";
"~Trident" "development";
}
rewrite /css/development.css /css/$envtype.css;
Solution 2:
So this is the code that works.
location = /css/development.css {
if ($http_user_agent ~* 'Trident') {
rewrite ^(.*)$ /css/production.css last;
}
alias C:/Work/src/css/development.css;
}