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;
    }