问题描述
hash模式下所有的路由都会加“#”号,但是新的需求需要去改变请求地址,而hash模式下路由/请求路径都带有“#”号无法正常使用,第一步解决方案是将hash模式改为history,就可以拿到干净的路由随意更改。完成功能后发现刷新页面404,动态路由也是404?
原因分析
hash模式刷新不会把“#”后面的hash值包含在请求中,而history模式刷新后会发起一个实实在在的请求,当后端匹配不到请求地址中的那个接口,前端也找不到之前的静态资源(打包后的index.html文件),就是404
解决办法
1、项目使用nginx部署,作好配置,这个配置的文章很多写的很好
2、动态路由的404,为动态路由在后端写一个通用接口,HTTP刷新发起请求从后端返回一个静态资源,静态资源,内容就是index.html文件内容,不是"index.html",项目更新返回的静态资源也需要更新