Nginx 使用 if 语句重写

Nginx 使用 if 语句重写

我们有 CSS 文件“development.css”,但对于 IE 用户,我需要将其重定向到“production.css”。这里有一个位置规则:

location = /css/development.css {
  if ($http_user_agent ~* 'Trident') {
    rewrite ^(.*)$ /css/production.css redirect;
  }
}

重定向对于 IE 正确工作,但对于所有其他浏览器都是 404。Nginx 的“if”没有“else”;使用重写处理 if 的正确方法是什么?

答案1

我建议你使用 nginx地图类似这样的(在浏览器中编写,未经测试):

map $http_user_agent $envtype {
    default       "production";
    "~Trident" "development";
}

rewrite /css/development.css /css/$envtype.css;

答案2

这是有效的代码。

    location = /css/development.css {
        if ($http_user_agent ~* 'Trident') {
            rewrite ^(.*)$ /css/production.css last;
        }
        alias C:/Work/src/css/development.css;
    }

相关内容