首页 > 其他分享 >vue 项目history模式刷新404问题解决办法

vue 项目history模式刷新404问题解决办法

时间:2024-10-25 09:34:16浏览次数:6  
标签:index vue html 模式 404 history

前言

vue项目history模式部署到服务器后 ,根路径访问没有问题,但是进入其他功能再刷新页面就会出现404,因为你没在nginx或者apache配置上面加上重定向跳转。

解决办法,只需要加上这段配置:

nginx配置内容:

location / {
  try_files $uri $uri/ @router;
  index index.html;
}
 
location @router {
  rewrite ^.*$ /index.html last;
}

或:

location / {
        root   /apps/web/www.test.com;
        index  index.html index.htm;
        # vue router history模式404
        try_files $uri $uri/ /index.html;
        # 允许 所有头部 所有$corsHost域 所有方法
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

这句配置的意思是每次匹配url路径时候找不到对应静态资源时候调制跳转到index.html文件

解析为什么会这样(针对路由在history模式下):

因为vue项目中路由hash模式改为了history模式,由于hash模式时url带的#号后面是哈希值不会作为url的一部分发送给服务器,而history模式下当刷新页面之后浏览器会直接去请求服务器,而服务器没有这个路由,于是就出现404。

因为我们的应用是单页客户端应用,当使用 history 模式时,URL 就像正常的 url,可以直接访问http://www.xxx.com/user/id,但是因为vue-router设置的路径不是真实存在的路径,所以刷新就会返回404错误。

想要history模式正常访问,还需要后台配置支持。要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。

也就是在服务端修改404错误页面的配置路径,让其指向到index.html。

标签:index,vue,html,模式,404,history
From: https://www.cnblogs.com/yang5726685/p/18501791

相关文章