为了账号安全,请及时绑定邮箱和手机立即绑定

React-Router V4+ 打包后刷新网页404错误

React-Router V4+ 打包后刷新网页404错误

牛魔王的故事 2018-12-29 18:13:53
开发使用的构建工具是 create-react-app我在使用 React-Router V4+ 版本的时候,npm run build编译成功后放在我本地的 Tomcat9 上,运行后可以正常访问首页,跳转其它页面 URL 都正常显示, 但是再刷新当前页面404错误。按照官方提示:There is also a similar approach for Apache servers. Create an .htaccess file in your folder's root:RewriteBase /RewriteRule ^index\.html$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.html [L]问题1 :创建了 .htaccess 文件后,该文件是放在我编译好的包的根目录(index.html所在目录)下,还是在 其它位置。如果需要修改其它东西如 Apache 配置文件,要怎么修改。问题2 :在网上看到这种情况都是将 URl 重定向到 index.html,请问还有其它不修改服务器配置文件的解决办法没有。跪求解答,谢谢
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

我没看过文档,建议你要理解内部的机制。

之所以你在浏览器内可以由首页跳转到其他路由地址,是因为这是由前端自行渲染的,你在React Router定义了对应的路由,脚本并没有刷新网页访问后台,是JS动态更改了location。

当你刷新时,你首先是访问的后台地址,然后返回的页面内加载了React代码,最后在浏览器内执行;也就是说如果这个时候报404,是因为你后台并没有针对这个路由给出返回HTML内容,也谈不上执行React Router了。

解决办法就一条:如果你期望所有的路由都由React Router来定义,只有你的后台,无论任何路径,都返回index.html就好了。剩下的事情交给React Router。那么你要做的就是修改后台服务器,可以放在apache,也可以放在你的java路由内做一个通配路径处理。


查看完整回答
反对 回复 2019-01-18
  • 1 回答
  • 0 关注
  • 725 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信