vue router history刷新404

const router = new Router({
  base: '/highspeedmanagement/',
  mode: 'history', //去掉url中的#
  routes
});

路由修改history后生产环境中#没有了,但是页面刷新就404,正常点击页面流转正常,改如何解决。

百度了一些解决办法,改nginx的配置等,亲测无效。

阅读 4.1k
2 个回答

首先,搜索解决方案,直接套用,“亲测无效”说明你没掌握到学习方法。

这里的原因是,现代浏览器都支持 pushState,可以改变 URL 的同时不请求服务器,所以你从首页进去,点击链接跳转正常。但是这些 URL,在服务器上并不存在真实的物理映射,所以你直接访问的时候,服务器会报 404 错误。

解决方案就是修改 nginx 的 try_files 配置,把 404 请求指向入口文件,大概是这样:

location / {
  try_files /$uri /$uri/ /index.html$args;
}

(这会儿在外面,凭记忆写的)

就是修改nginx啊,怎么就亲测无效了呢? 告诉你的运维同事,用try去配置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题