我有一个Vue项目,该项目使用“ try_files”配置来避免刷新“非根” URL时出现404错误,例如:
location / {
......
root /web/pcResource;
try_files $uri $uri/ /index.html;
}
工作正常。但是当我需要一个可变的“ root”值之前(由用户代理决定)时,像这样:
set $dir "/web/pcResource";
if ($http_user_agent ~* "(Android|iPhone|iPod|Symbian|BlackBerry|Windows Ph one|Mobile|J2ME)") {
set $dir "/web/mobileResource";
}
root $dir;
location / {
......
try_files $uri $uri/ /index.html;
}
try_files配置的“ /index.html”始终指向“ / web / pcResource”中的文件,因此在移动浏览器上刷新“非根” URL时出现404错误。 似乎try_files仅“记住” root的第一个值。当我先将$ dir设置为“ / web / mobileResource”,然后如果用户代理为pc时将其设置为“ / web / pcResource”,则会出现一个相反的错误:我可以在移动浏览器上刷新并在PC上出现404错误浏览器。 如果我想使用可变的根值,正确的配置是什么?
答案 0 :(得分:0)
原因是我有此配置:
location / {
if ($http_user_agent ~* "(Android|iPhone|iPod|Symbian|BlackBerry|Windows Phone|Mobile|J2ME)") {
access_log /var/log/nginx/xxmobile.log;
}
........
}
“ access_log”选项不能在“ if”范围内,但是可以重新加载此配置,而不会出现错误消息。因此,删除此选项后即可使用。