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

如何在AWS中重定向HTTPS请求(CloudFront后的S3静态页面)

解决https://example.com重定向到https://www.example.com的方案

方法一:使用CloudFront函数(推荐,边缘端执行,低延迟)

CloudFront函数可在边缘节点直接处理请求,无需回源S3,效率更高。

  1. 创建CloudFront重定向函数

    • 登录AWS控制台进入CloudFront服务,打开「函数」页面点击「创建函数」。
    • 函数名称设为RedirectBareDomainToWWW,运行时选择cloudfront-js-2.0。
    • 将默认代码替换为以下逻辑:
      function handler(event) {
          const request = event.request;
          const host = request.headers.host.value;
          
          if (host === 'example.com') {
              return {
                  statusCode: 301,
                  statusDescription: 'Moved Permanently',
                  headers: {
                      location: {
                          value: `https://www.example.com${request.uri}`
                      }
                  }
              };
          }
          
          return request;
      }
      
    • 点击「发布」,将函数推送到「生产」阶段。
  2. 关联函数到裸域名的CloudFront分发

    • 若未创建example.com的CloudFront分发:
      • 新建分发,源选择现有S3存储桶;在「设置」中添加example.com为备用域名,选择包含该域名的ACM证书(必须是us-east-1区域的);默认缓存行为的「函数关联」中,为「查看器请求」绑定刚创建的函数。
    • 若已有example.com的分发:
      • 编辑该分发的默认缓存行为,在「查看器请求」的函数关联中添加已发布的重定向函数。
  3. 更新DNS解析

    • 将example.com的A/AAAA记录指向对应CloudFront分发的域名,等待解析生效。

方法二:使用S3存储桶重定向+CloudFront分发

若偏好S3原生重定向能力,可按以下步骤操作:

  1. 创建裸域名S3存储桶

    • 创建名称为example.com的存储桶(需与域名完全一致)。
    • 在存储桶「属性」→「静态网站托管」中选择「启用重定向」,设置目标域名为www.example.com,协议选择HTTPS。
    • 配置存储桶权限,允许CloudFront通过OAI或存储桶策略访问。
  2. 创建裸域名CloudFront分发

    • 新建分发,源选择该S3存储桶的静态网站端点(注意不是S3 REST API端点)。
    • 添加example.com为备用域名,选择对应ACM证书;配置缓存行为确保HTTPS请求可回源到S3重定向端点。
  3. 更新DNS解析

    • 将example.com的A/AAAA记录指向该CloudFront分发的域名。

注意事项

  • ACM证书必须包含example.com和www.example.com,且部署在us-east-1区域,CloudFront仅支持该区域的证书。
  • 优先使用301永久重定向,利于SEO优化。
  • 配置完成后需等待CloudFront部署(10-15分钟)及DNS解析生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:09:28