最近遇到react-router-dom路由使用BrowserRouter,本地开发没问题,发布到服务器再次刷新就报404not found,
原因解析:
之所以你在浏览器内可以由首页跳转到其他路由地址,是因为这是由前端自行渲染的,你在React Router定义了对应的路由,脚本并没有刷新网页访问后台,是JS动态更改了location。
当你刷新时,你首先是访问的后台地址,然后返回的页面内加载了React代码,最后在浏览器内执行;也就是说如果这个时候报404,是因为你后台并没有针对这个路由给出返回HTML内容,也谈不上执行React Router了。
网上很多关于配置webpack-dev-server.js等,解释不太清楚,没太看懂。
同事的项目是前后端分离打包,所以用的是nginx配置解决了这个问题,如下图:

我的项目是前端打包号,放到java web项目的webapp下面,服务器部署一个war包,经过各种实验和摸索,后面在web.xml里面配置:

再次刷新,问题解决,刷新当前页面数据和相关路由,都跟预想一样。但是这种的话,就是把所有的404页面都会跳转到index.html.
不知道你们还有没有好的解决方案?欢迎补充!!!
650

被折叠的 条评论
为什么被折叠?



