如何在Route53与CloudFront中配置www域名重定向到非www域名
CloudFront配置www.example.com重定向至example.com操作指南
前置说明
你之前的操作仅将两个域名绑定到同一CloudFront分发,CloudFront默认无自动重定向逻辑,因此两个域名均可正常访问内容。以下是完整配置步骤:
配置步骤
1. 确认ACM证书有效性
你使用的ACM证书必须部署在us-east-1区域(CloudFront仅支持该区域的ACM证书),且证书需同时覆盖example.com和www.example.com(可以是单域名叠加,也可以是通配符域名证书),避免访问www域名时出现SSL报错。
2. 配置CloudFront重定向规则
因为你的S3桶未开启静态网站功能,无法通过S3侧配置重定向,需在CloudFront层配置重定向逻辑,推荐以下两种方案二选一即可:
方案A:使用CloudFront Functions(轻量、成本更低)
- 进入CloudFront控制台,找到当前服务example.com的分发,进入「函数」标签页
- 新建函数,运行时选择CloudFront Functions 2.0,粘贴以下代码(将代码中的
example.com替换为你的实际根域名):
function handler(event) { const request = event.request; const host = request.headers.host.value; const rootDomain = "example.com"; if (host === `www.${rootDomain}`) { return { statusCode: 301, statusDescription: "Moved Permanently", headers: { "location": { "value": `https://${rootDomain}${request.uri}${request.querystring ? `?${request.querystring}` : ""}` }, "cache-control": { "value": "max-age=3600" } } }; } return request; }
- 测试函数无误后发布,将函数关联到当前CloudFront分发的默认缓存行为的查看器请求触发器,保存配置。
方案B:使用CloudFront内置重定向规则(无需写代码)
- 进入CloudFront分发的「行为」标签页,编辑默认缓存行为
- 找到「重定向规则」模块,添加新规则:
- 匹配条件:请求头
Host等于www.example.com - 执行操作:重定向到
https://example.com,勾选保留原请求路径、保留原查询字符串 - 重定向状态码选择
301(永久重定向),保存配置。
- 匹配条件:请求头
3. 修正Route53解析配置
不要将www.example.com的CNAME记录指向example.com,需直接指向你当前CloudFront分发的官方域名(格式为xxx.cloudfront.net),和example.com的解析指向目标一致。
验证配置
CloudFront配置生效需要5~10分钟,生效后你可以用以下方式验证:
- 打开无痕浏览器访问
https://www.example.com,会自动跳转至https://example.com对应路径 - 用curl命令验证返回头:
curl -I https://www.example.com,可看到返回状态码为301,Location头指向根域名对应地址
注意:301重定向会被浏览器长期缓存,若测试未生效可先清除浏览器缓存或更换网络环境测试。
内容的提问来源于stack exchange,提问作者DenCowboy
相关产品推荐
相关产品推荐

