如何在AWS Route53中将根域名流量重定向到子域名并解决访问报错
问题根因
你当前的配置逻辑存在两个核心错误:
- 你将
luoweilue.com的DNS直接指向了index.luoweilue.com对应的CloudFront IP,但该CloudFront分发的备用域名(Alternate Domain Names) 没有添加luoweilue.com,CloudFront收到Host为luoweilue.com的请求时无法匹配到对应分发,直接返回报错。 - 就算你给现有CloudFront添加了
luoweilue.com作为备用域名,也只是实现了两个域名返回相同内容,不会自动跳转到index.luoweilue.com,不符合你的重定向需求。
解决方案1:独立S3重定向桶方案(最稳定,AWS官方推荐)
- 创建S3重定向桶
- 新建一个S3桶,名称无强制要求,区域可任意选择,关闭
阻止所有公共访问 - 进入桶的
属性页,找到静态网站托管选项选择启用,托管类型选将请求重定向到另一个域名 - 目标域名填写
index.luoweilue.com,协议选择https,保存配置即可
- 新建一个S3桶,名称无强制要求,区域可任意选择,关闭
- 为根域名新建CloudFront分发
- 源域选择刚才创建的S3静态网站托管端点(注意不要选自动提示的S3桶ARN,要选静态网站的域名,格式类似
xxx.s3-website-xxx.amazonaws.com) - 备用域名添加
luoweilue.com - 证书选择你已经申请好的覆盖
luoweilue.com的ACM证书(注意必须是us-east-1区域的证书,CloudFront仅支持该区域的ACM证书) - 其他配置保持默认即可,等待分发部署完成
- 源域选择刚才创建的S3静态网站托管端点(注意不要选自动提示的S3桶ARN,要选静态网站的域名,格式类似
- 修改Route53配置
- 删除你之前创建的
luoweilue.com指向index.luoweilue.com的解析记录 - 新建
luoweilue.com的A记录,类型选A-IPv4地址,路由流量选择Alias to CloudFront distribution,选择刚才创建的根域名对应的CloudFront分发,保存后等待DNS生效即可
- 删除你之前创建的
解决方案2:现有CloudFront配置重定向规则(更省事)
如果你不想额外新增CloudFront分发,可以直接修改现有配置:
- 给现有CloudFront添加备用域名
- 进入你当前服务
index.luoweilue.com的CloudFront分发配置,在常规标签页找到备用域名,添加luoweilue.com,保存后等待配置生效
- 进入你当前服务
- 添加CloudFront函数重定向规则
- 进入CloudFront控制台的
函数页面,新建一个函数,代码如下:
function handler(event) { var request = event.request; var host = request.headers.host.value; if (host === 'luoweilue.com') { var response = { statusCode: 301, statusDescription: 'Moved Permanently', headers: { 'location': { value: 'https://index.luoweilue.com' + request.uri } } }; return response; } return request; }- 发布函数后,绑定到现有CloudFront分发的
查看器请求触发位置,等待部署完成
- 进入CloudFront控制台的
- 不需要修改你当前的Route53配置,两个域名解析到同一个CloudFront地址后,CloudFront会自动识别Host并将根域名的请求重定向到子域名。
内容的提问来源于stack exchange,提问作者weilueluo
相关产品推荐
相关产品推荐

