如何配置ALB监听器规则,让S3返回403/404时重定向至index.html?
解决方案:用ALB监听器规则搞定React SPA路由兼容
核心逻辑
当S3收到/login这类非根路径请求返回403/404时,让ALB截住这个响应,把请求重新转发到S3的/index.html,同时保留客户端的原始URL,这样React的前端路由就能正常解析路径了。
具体配置步骤
- 打开AWS控制台的应用负载均衡器页面,找到你的ALB,进入对应的HTTP/HTTPS监听器配置界面。
- 新增一条监听器规则,优先级一定要比默认的「转发到S3目标组」规则高:
- 条件选「响应代码」,勾选403和404两个状态码。
- 操作选「转发到」,指定你的S3 VPC终端节点目标组;然后打开「修改请求」,在路径设置里选「替换为」,输入
/index.html。
- 保存规则后,试试访问
test.net/login这类路由——现在ALB会在S3返回404后自动转发到index.html,React路由就能正常处理了。
注意要点
- 规则优先级是关键:这条拦截403/404的规则必须排在最前面,不然ALB会直接把S3的404响应扔给客户端,触发不了转发逻辑。
- S3基础配置别改:保持桶的索引文档和错误文档都是
index.html,这是根路径能正常访问的前提。 - 别用重定向:重定向会改掉客户端的URL,必须用「转发+路径替换」,这样浏览器地址栏里的路径不变,React路由才能正确识别。
- 如果用HTTPS监听器,确保证书配置没问题,避免协议不兼容的坑。
内容的提问来源于stack exchange,提问作者Lys
相关产品推荐
相关产品推荐

