问题描述
进入页面后刷新不会出现任何问题,当你从/路由跳转到/XXX路由,再刷新就会提示404。
问题原因
我们的服务器是根据页面路由,去按路径寻找资源的。我们打包好的web站点只有一个html页面,不存在其他资源目录下的html,服务器找不到对应页面所以才报404。
解决方案
我看网上有人用配置多个location对象,通过重定向回根目录的index.html解决这个问题。但是我觉得这个方案过于繁琐,不适用于比较大,页面比较多的项目。于是我找到了一个只需要加一行代码就可以解决的方案。
<!--只需要把这行代码加到我们的根目录的location配置项中就可以解决这个问题-->
try_files $uri $uri/ /index.html;
<!--加完以后是这个样子的-->
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html; //解决单页面应用路由跳转后刷新报404错问题
xxx XXXXXX
}
<!--完成这些后,你只需要保存退出vim编辑器并重新启动nginx就可以了。 -->
如果大家不想麻烦,也可以直接换hash路由解决问题。
最后,如果我讲的这写对你有帮助请帮我点个赞支持一下吧,刚开始分享自己的经验,希望可以得到大家的支持和指正。 谢谢大家!