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

Hugo Coder主题多页站点AWS Amplify部署路由问题解决

问题:Hugo Coder主题站点在AWS Amplify部署后子路由无法访问

我正在使用Hugo Coder主题,基于其示例站点在AWS Amplify上部署测试。该站点在Netlify上通过netlify.toml的构建步骤可正常运行,但因其他依赖需部署到Amplify。

当前构建配置如下:

version: 2
frontend:
  phases:
    build:
      commands:
        - hugo
  artifacts:
    baseDirectory: public
    files:
      - '**/*'
  cache:
    paths: []

构建日志显示站点已成功构建,首页可正常加载,但子路由无法访问。推测是重写与重定向配置问题,因为这不是单页网站,需要单独配置。查阅Amplify官方文档后,发现多页站点部署的相关指引不够清晰。

补充说明:Amplify文档提到会自动处理尾部斜杠与干净URL(如将/about/index.html转换为/about),但我的场景中该功能未生效,是否有办法强制启用?


解决方案

1. 配置重写规则解决子路由访问问题

针对Hugo生成的静态站点,需要添加重写规则让Amplify正确映射子路由到对应的index.html文件。有两种配置方式:

方式一:通过Amplify控制台配置

进入Amplify控制台的站点设置,找到「重写与重定向」页面,添加以下两条规则:

  • 源地址:</^[^.]+$/>,目标地址:/index.html,类型:重写
  • 源地址:</^[^.]+/$/>,目标地址:/index.html,类型:重写

方式二:通过本地配置文件同步

在项目根目录创建amplify/backend/hosting/staticFiles/redirects.json目录及文件(目录不存在则手动创建),写入以下内容:

[
  {
    "source": "</^[^.]+$/>",
    "target": "/index.html",
    "status": "200",
    "condition": null
  },
  {
    "source": "</^[^.]+/$/>",
    "target": "/index.html",
    "status": "200",
    "condition": null
  }
]

2. 强制启用干净URL与尾部斜杠处理

Amplify的自动处理可能受Hugo站点配置影响,可通过以下步骤强制生效:

  • 在Hugo配置文件(config.toml或config.yaml)中明确开启干净URL设置:
    # 全局禁用丑陋URL,启用干净路径
    uglyURLs = false
    relativeURLs = false
    
    # 针对文章类型设置永久链接格式(可选)
    [permalinks]
      post = "/:year/:month/:day/:slug/"
    
  • 在Amplify的「重写与重定向」页面,开启「自动重定向」下的「追加尾部斜杠」和「移除尾部斜杠」选项;也可添加额外重定向规则补全:
    [
      // 保留之前的重写规则
      {
        "source": "/:path",
        "target": "/:path/",
        "status": "301",
        "condition": null
      },
      {
        "source": "/:path/",
        "target": "/:path",
        "status": "301",
        "condition": null
      }
    ]
    

3. 对齐Hugo版本避免构建差异

Amplify默认使用的Hugo版本可能与本地不一致,导致输出格式异常。可在构建命令中指定对应版本(推荐使用extended版本,适配Coder主题的SCSS需求):

version: 2
frontend:
  phases:
    build:
      commands:
        - wget https://github.com/gohugoio/hugo/releases/download/v0.120.0/hugo_extended_0.120.0_Linux-64bit.tar.gz
        - tar -xzf hugo_extended_0.120.0_Linux-64bit.tar.gz
        - ./hugo
  artifacts:
    baseDirectory: public
    files:
      - '**/*'
  cache:
    paths: []

将版本号替换为你本地使用的Hugo版本即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:57:20