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

如何在AWS S3静态站搭配的CloudFront中配置别名301重定向?

你当前配置未生效的原因

将两个域名同时添加到同一个CloudFront分发的备用域名列表后,CloudFront会默认将两个域名的请求都转发到源站返回相同内容,不会主动触发重定向逻辑,因此两个域名都可以独立访问。


方案1(推荐:零代码、无需Lambda@Edge、最快5分钟配置完成)

不需要修改现有Gatsby部署、也不需要新增S3存储桶,直接用CloudFront原生重定向功能即可实现:

  • 首先将lp.xxx.com从你现有landingpage对应的CloudFront分发的「备用域名(CNAME)」列表中移除
  • 新建一个CloudFront分发,源类型选择「重定向响应」,不需要配置实际源站:
    • 重定向目标域名填写landingpage.xxx.com
    • 协议选择HTTPS
    • 响应码选择301 Moved Permanently
    • 按需勾选「将请求路径附加到重定向 URL 之后」,纯单落地页不需要保留路径可以不勾选
  • 给这个新分发绑定lp.xxx.com作为备用域名,选择包含lp.xxx.com的ACM SSL证书(必须在us-east-1区域申请)
  • 最后修改Route53中lp.xxx.com的解析记录,指向这个新的CloudFront分发域名即可

方案2:单CloudFront分发场景,需使用Lambda@Edge

如果你希望保留两个域名在同一个CloudFront分发下,不需要新建分发,就需要用到Lambda@Edge实现域名判断重定向:

  • 在us-east-1区域创建Node.js运行时的Lambda函数,示例代码如下:
exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    const host = request.headers.host[0].value;
    if (host === 'lp.xxx.com') {
        const response = {
            status: '301',
            statusDescription: 'Moved Permanently',
            headers: {
                'location': [{
                    key: 'Location',
                    value: `https://landingpage.xxx.com${request.uri}`
                }]
            }
        };
        callback(null, response);
        return;
    }
    callback(null, request);
};
  • 发布Lambda函数版本,将其绑定到现有CloudFront分发的viewer request触发事件,缓存行为选择默认*即可
  • 配置完成后等待CloudFront分发生效,就会自动识别域名做重定向

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:02