BrowserRouter二级页面刷新404解决方案

在跟随优快云学堂学习react路由的时候,初次上来使用BrowserRouter进行路由操作,跟着老师一顿操作以后,完美实现跳转并且制定了一些简单拦截,效果图如下:
在这里插入图片描述
系统首页,学习实验制作,希望各位不要在意这简陋的样式
首先点击跳转会员中心如下图:
在这里插入图片描述
由于做过拦截,因此直接来到了登录页面,下面登录,没有后台等判定原因,做了简单判断只要账号密码不是空就能登录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
登陆成功毫无问题,这是刷新这个user界面也是没有问题的。这时老师说,我们把项目发布,看看实际情况,想着反正出了问题老师还是会讲解,于是试了一下:
在这里插入图片描述
结果如图所示果然出现了问题,二级页面刷新404,所料不差,老师也说出了解决方案。分析一波是由于BrowerRouter在开发过程中从内存中读取资源,实际环境下则是从服务器对应路径下获取资源。比如下图
在这里插入图片描述

在这里插入图片描述
哦吼,我这nginx里面压根有没有user,这么看来是路径找不到了啊,继续跟着老师解决,老师找的了项目中的一个config文件夹下面的paths.js文件,修改路径重新访问。等等我的项目中压根就没有config这样的文件夹。。。在这里插入图片描述,好家伙上来第一步直接结束。不行,没发现还好,发现了那肯定要解决,首先想到了第一个方案。
1.BrowserRouter这个不行,那肯定是他自身的问题啊,我们换了他,不用了,改换成HashRouter,换了试试看:
在这里插入图片描述
成功交换,重新打包,reload一下nginx,效果如下:
在这里插入图片描述
这水印当得好,大家凑活着看吧,总之刷新没问题了,但是在这里插入图片描述这#号也太丑了,再想想还有没有别的方法。路径问题,nginx发布,于是想到了从nginx入手;
2.修改一波nginx配置文件,具体配置如下:
在这里插入图片描述

在这里插入图片描述
换回BrowserRouter,重新发布,再来一次测试。
在这里插入图片描述
问题解决,同时#也没了
在这里插入图片描述
当然在解决问题上网搜索的过程中也看到了其他很多的解决方案,比如webpack配置文件的修改,但我这边还没用上webpack后面遇到了再补上,再比如修改packge.json,在server中做一段配置,但我试过在我这边并不适用,因此没有写出来,当然解决方案肯定不是唯一的,每个人的情况也不一样,我这边用的是nginx还有apach等等不同的发布方式,解决方案肯定也不同,但是问题发生的原因是一样的,找到原因总会有方法解决的。

在这里插入图片描述

希望对大家有用,再见了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值