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

AWS Amplify部署Next.js SSG项目 rewrite/redirect规则配置问题

问题根因

AWS Amplify的重写/重定向规则按从上到下的顺序匹配,命中第一条符合条件的规则后就会停止匹配后续规则。你将通用的无后缀资源匹配规则放在原有业务规则前面时,所有请求会优先命中该规则,直接导致原有/e/*、/n/*、/s/*等业务规则全部失效。

解决方案

1. 修正规则优先级顺序

所有规则严格按照「精准度从高到低」排序,具体顺序如下:

# 原有业务规则(注意修正正则笔误:把\d{1.2}改为\d{1,2})
/e/<*>                                    /e/[eId]                    200 (Rewrite)
/n/<*>                                    /n/[nId]                    200 (Rewrite)
/s/<\d{1,2}>                              /s/[sId]                    200 (Rewrite)
/s/<\d{1,2}>/s                            /s/[sId]/s                  200 (Rewrite)
/s/<\d{1,2}>/i/<\d{1,2}>                  /s/[sId]/i/[iId]            200 (Rewrite)
/s/<\d{1,2}>/s/<\d{1,2}>                  /s/[sId]/s/[sId2]           200 (Rewrite)
/s/<\d{1,2}>/s/<\d{1,2}>/i/<\d{1,2}>      /s/[sId]/s/[sId2]/i/[iId]   200 (Rewrite)

# 新增根路径下someId匹配规则,排除已匹配的/e、/n、/s前缀,同时排除带后缀的静态资源
/<^[ens]/[^.]+>                           /[someId]                   200 (Rewrite)

# 通用客户端路由兜底规则
</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf)$)([^.]+$)/>    /index.html    200 (Rewrite)

# 最终404兜底规则
/<*>                                      /index.html                 404 (Rewrite)

2. 解决路径自动加尾斜杠问题

你可以任选一种方案处理:

  • 方案1:进入Amplify控制台「构建设置」→「重写和重定向」页面,关闭右上角的「纯净URL」功能,即可禁止平台自动给路径添加尾斜杠。
  • 方案2:在所有规则最顶部添加一条重定向规则,统一将带尾斜杠的非资源路径跳转到无尾斜杠格式:
    /<*>/                                     /<*>                        301 (Redirect)
    

规则优化建议

  • 如果你使用Next.js的output: 'export'模式导出纯静态资源,建议所有动态路由都通过generateStaticParams生成对应的静态HTML文件,减少对rewrite规则的依赖。
  • 404场景建议单独生成404.html,将最后一条404兜底规则的目标改为/404.html,符合静态站点的标准响应逻辑。
  • 定期清理冗余规则,避免规则过多出现意外匹配冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:24:08