使用 try_files 时 JSON 请求出现问题

使用 try_files 时 JSON 请求出现问题

我正在尝试try_files按照这里的建议使用https://router.vuejs.org/en/essentials/history-mode.html并达到同样的目的。

我对它做了一个更改,即删除index.html部分命令,使其看起来如下所示:

location / {
    try_files $uri $uri/ /;
}

如果我的问题的一部分是我删除了,index.html我会注意到当我删除它时出现了以下错误:

rewrite or internal redirection cycle while internally redirecting to "/index.html"

据我所知,它按预期工作,只是它对 JSON 请求的处理方式与我想要的不同。我没有得到 JSON 响应,而是得到了看起来像我网站上的任何其他页面但没有内容的内容。

通过跟踪日志,我可以看到当我点击时/foo.json我被重定向到/并检查 URL,我可以看到已经/foo.jsonpushState编辑了。

我在这里使用try_files不正确吗?如果没有,有没有办法让它忽略 JSON 请求?我尝试将语句放在检查内容类型的条件中,但当我启动服务器时出现以下错误:

nginx: [emerg] "try_files" directive is not allowed here in
/tmp/passenger-standalone.15snfcb/config:110

答案1

在迈克尔·汉普顿的帮助下我想出了以下解决方案:

在我的服务器块中(删除了不必要的其他块/命令):

location / {
    try_files $uri $uri/ /;
}

location ~ ".+json$" { 
    passenger_enabled on; 
}

正则表达式不够全面,但可以解决我遇到的问题。我想找到一个使用文件内容类型而不是正则表达式的解决方案。

相关内容