我正在尝试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.json
被pushState
编辑了。
我在这里使用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;
}
正则表达式不够全面,但可以解决我遇到的问题。我想找到一个使用文件内容类型而不是正则表达式的解决方案。