原因:
vue的路由是由js来控制的,但是,当你刷新浏览器的时候,是向服务器发送请求的一个过程,当访问不到的时候必然会返回404。
解决办法:
- 后台配合:将请求同意指向一个有效地址。
比如,你的首页请求地址为www.aaa.com/go.html
,但是路由变为www.aaa.com/main
,这时候你可以与后端人员商量,将www.aaa.com/...
统统指向www.aaa.com/go.html
,这样就解决了404问题。 - 仿真路由:路由后带.html后缀
我遇到一个问题,就是页面初次加载时是携带参数的,www.aaa.com/go.html?p=123
,根据参数p决定是跳转路由A还是路由B,加入跳转到了路由A,也就是www.aaa.com/routerA
,这时候刷新,就会出现404问题,这时候后端人员是解决不了的,因为还需要携带参数。
我的解决办法是:- 先将路由仿真:也就是将
/routerA
变为/routerA.html
,并在跳转时携带参数,this.$router.push({path: /routerA.html${this.$router.query.p}})
,所以刷新时,会向服务端请求routerA.html
,并且携带参数p; - 这时在
www.aaa.com
下真的存放一个routerA.html
,在文件里面获取参数p,然后跳转window.location.href='www.aaa.com/go.html?p=123'
。
- 先将路由仿真:也就是将
个人博客:午后南杂