React路由之BrowserRouter页面刷新报错,nginx服务器的配置问题

React路由之BrowserRouter页面刷新报错,nginx服务器的配置问题

react单页面项目使用BrowserRouter路由时,对处于二级或多级路由状态的页面进行刷新,路由会被发送到服务器,此时,就需要在服务器端进行配置,将路由重定向到项目的唯一页面index.html,否则会报错404。

若使用nginx来充当服务器,需要添加以下配置

server {
    listen  3000;
    server_name  localhost;
    location / {
       root   html/project;
       index  index.html;
	   gzip_static on; #静态压缩
	   #路由重定向配置
		try_files $uri $uri/ /index.html;
    }
	#配置访问后台接口代理
	location  /project {
         proxy_pass   http://127.0.0.1:13000/project;
    }
}

此时还有一个问题需要注意,如果nginx既充当服务器,又充当前后端分离的代理服务器时,有可能会发生以下情况:
路由的前缀与请求后台的前缀一致的情况

比如后台接口路径为/project/getDic,而菜单路由为/projectItem/dicManagement,此时,根据nginx的location匹配原则,路由也匹配到了“/project”对应的location,此时进行二级路由的刷新也会报错404,因为将路由也代理到了后台服务器,而后台服务器没有对应的Controller进行处理。
遇到以上情况时需要对“/project”对应的location进行修改,可以修改为:

location  /project/ {
    proxy_pass   http://127.0.0.1:13000/project/;
}

具体的修改方案需要根据自己的路由和接口路径而定,这里的方案只是针对我自己的项目进行的修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值