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

部署在AWS Amplify的Gatsby JS站点直接访问子路径跳转首页如何解决?

问题核心原因

该问题是典型的静态站点SPA路由服务端适配缺失问题,和你提供的Amplify构建设置无关:

  • Gatsby属于预渲染静态站点,站内跳转是前端路由接管,不需要向服务端发起新请求,所以可以正常加载子路径内容
  • 直接访问子路径时,请求会先打到Amplify的静态托管服务,如果服务端没有匹配到对应路径的静态资源,也没有配置正确的重写规则,就会默认返回首页或者跳转到根路径
排查步骤
  • 优先检查Amplify控制台的重定向配置:默认创建的SPA应用会自带SPA回退规则,若被误删或修改就会触发该问题
  • 本地执行gatsby build,检查生成的public目录下是否存在pricing/index.html文件,排除Gatsby本身页面构建失败、路径配置错误的问题
  • 检查gatsby-config.js中是否配置了错误的pathPrefix,或者启用了修改静态资源输出路径的不兼容插件
  • 检查Amplify托管设置中是否开启了「干净URL(移除.html后缀)」功能,未开启时直接访问/pricing会找不到资源,需要请求/pricing.html才能正常加载
解决方法
  • 配置Amplify重写规则:
    进入Amplify应用控制台 -> 左侧菜单选择「重定向和重写」,新增如下规则:

    源地址:<*>
    目标地址:/index.html
    状态码:200(重写)
    如果需要保留静态资源的优先匹配逻辑,避免重写规则拦截css、图片等静态资源请求,可以使用更精准的正则规则:
    源地址:</^[^.]+$|\.(?!(css|gif|ico|jpg|jpeg|js|png|txt|svg|woff|woff2|json|map)$)([^.]+$)/>
    目标地址:/index.html
    状态码:200(重写)

  • 无需额外配置重写规则的方案:直接在Amplify托管设置中开启「干净URL」功能,平台会自动处理.html后缀的匹配逻辑,直接访问子路径即可正常加载对应预渲染的html文件
  • 若排查发现是Gatsby构建问题,确认所有页面都放在src/pages目录下,或者createPageAPI调用时的path参数配置正确,确保构建后public目录下存在对应子路径的index.html文件

内容的提问来源于stack exchange,提问作者Vikas Roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:45:03