Nginx 用 if 语句重写

sof*_*ape 4 nginx

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

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

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

Flo*_*aie 6

我建议您使用 nginx map。像这样(在浏览器中编写,未测试):

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

rewrite /css/development.css /css/$envtype.css;
Run Code Online (Sandbox Code Playgroud)