You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Navigation Native Web部署后路由访问404如何解决?

问题根因

你的linking对象配置不存在遗漏。本地环境运行正常是因为Expo的Web开发服务器默认支持单页应用(SPA)的客户端路由逻辑,会把所有路由请求统一 fallback 到入口的index.html文件,由React Navigation的linking模块接管路由匹配和渲染。
线上部署到AWS S3后出现404是因为S3默认的静态网站托管规则是按路径匹配真实存在的静态文件,你直接访问https://***/details时,S3会尝试查找存储桶根目录下名为details的文件或子目录下的默认索引文件,找不到就返回404错误,和前端配置无关。

修复方案

S3存储桶配置调整

  • 方案1:修改错误文档配置
    进入S3存储桶的「属性」标签页,找到「静态网站托管」配置项,将**错误文档(错误页)**的文件名设置为index.html,同时可将错误响应码修改为200。这样所有找不到对应静态文件的请求都会返回index.html的内容,由前端路由接管渲染。
  • 方案2:配置重定向规则
    如果你需要更精细的路由控制,可以在静态网站托管的「重定向规则」中添加如下JSON规则,将所有404请求重定向到入口文件:
[
  {
    "Condition": {
      "HttpErrorCodeReturnedEquals": "404"
    },
    "Redirect": {
      "ReplaceKeyPrefixWith": "",
      "HttpRedirectCode": "200"
    }
  }
]

CloudFront CDN 额外配置(若使用)

如果你的S3存储桶前端搭配了CloudFront CDN分发,需要额外在CloudFront的「错误页面」配置中添加自定义错误响应规则:

  • 分别添加404、403错误的自定义响应配置
  • 响应页路径设置为/index.html
  • HTTP响应码修改为200
校验项
  • 执行expo build:web构建后的产物根目录确认存在index.html文件
  • 确认S3存储桶的权限配置允许公开访问index.html,不存在权限拦截导致的访问异常

内容的提问来源于stack exchange,提问作者James Chung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:27:03