![Nginx 配置 if 和 try_files](https://linux22.com/image/628120/Nginx%20%E9%85%8D%E7%BD%AE%20if%20%E5%92%8C%20try_files.png)
我想检查配置中的查询字符串。如果匹配,则加载某个页面。如果不匹配,则重定向。因此我这样编写配置:
...
location / {
if ($args ~ "api_url") {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
index index.html;
try_files $uri /page_cache/$uri /page_cache/$uri/ /page_cache/$uri.html @puma;
break;
}
rewrite ^ http://domain.com permanent;
}
...
但它不起作用,因为我无法在 if 中使用所有这些指令。
我尝试break
在 if 中只使用一个,但是也不起作用。
我怎样才能做到这一点?
谢谢。
答案1
您只需要反转 if 中的逻辑:(我还将删除代理指令,因为它们在这里没有效果)
location / {
if ($arg_api_url != '') {
return 301 http://domain.com/;
}
try_files $uri /page_cache/$uri /page_cache/$uri/ /page_cache/$uri.html @puma;
}