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

AWS CloudFront与S3重定向丢失自定义域名及规则配置问题

解决CloudFront+S3静态站路由规则不生效且丢失自定义域名的问题

我之前碰到过一模一样的情况!结合AWS的配置细节和踩过的坑,给你几个针对性的排查和解决方向:

1. 确认CloudFront源使用的是S3网站端点(而非REST端点)

这是最容易踩的坑:如果CloudFront的源域名选的是自动填充的S3 REST端点(比如mysite.s3.amazonaws.com),哪怕你以为指向了网站端点,S3的路由规则也不会生效。

  • 去CloudFront控制台找到你的分发,进入「源」标签页
  • 确认源域名是mysite.s3-website.us-east-2.amazonaws.com(S3静态网站托管的专属端点),而不是不带-website的REST端点

2. 修改S3路由规则,强制指定自定义域名和HTTPS协议

默认的S3路由规则重定向会跳转到S3自身的域名,这就是你丢失自定义域名的原因。需要在路由规则里显式指定HostName和Protocol:

完整的正确规则示例(替换成你的域名):

<RoutingRules>
  <RoutingRule>
    <Condition>
      <KeyPrefixEquals>page1</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <HostName>www.mysite.com</HostName>
      <Protocol>https</Protocol>
      <ReplaceKeyWith>page2</ReplaceKeyWith>
      <!-- 用301永久重定向,302临时重定向根据需求改 -->
      <HttpRedirectCode>301</HttpRedirectCode>
    </Redirect>
  </RoutingRule>
</RoutingRules>
  • 确保所有XML标签闭合(你提供的规则片段看起来没写完,这也可能导致不生效)
  • 把这段规则放到S3控制台「静态网站托管」的「路由规则」文本框里

3. 清理CloudFront缓存(关键!)

CloudFront会缓存之前的响应,哪怕你修改了S3路由规则,旧的缓存可能还在生效。

  • 进入CloudFront控制台的分发详情,切换到「无效缓存」标签页
  • 创建一个无效请求,路径填/*(清空所有缓存),等待几分钟让缓存生效

4. 检查CloudFront行为的路径转发设置

如果CloudFront的行为配置里限制了路径转发,S3可能收不到完整的page1路径,导致路由规则不触发:

  • 进入CloudFront分发的「行为」标签页
  • 找到默认行为(或对应page1的行为),确认「路径模式」是/*,且「转发查询字符串」「转发请求头」等设置没有过滤掉必要的路径信息

5. 验证重定向的实际请求

如果还是有问题,可以用curl -v https://www.mysite.com/page1查看响应头,确认重定向的目标URL是不是https://www.mysite.com/page2,这样能快速定位是S3规则没生效,还是CloudFront的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:54:18