Nginx服务器-路由切换后刷新后报404问题

4,558 阅读1分钟

问题描述

进入页面后刷新不会出现任何问题,当你从/路由跳转到/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路由解决问题。

最后,如果我讲的这写对你有帮助请帮我点个赞支持一下吧,刚开始分享自己的经验,希望可以得到大家的支持和指正。 谢谢大家!