如何通过Route 53的CNAME/A记录将zyx.com指向abc.com/cba?
Route 53 实现域名指向带路径的目标页面
DNS记录(包括CNAME和A记录)仅支持将域名映射到IP地址或另一个域名,无法直接指定URL路径——这就是你之前操作后zyx.com只能跳转到abc.com根目录的核心原因。在AWS生态内,有以下几种可行方案实现需求:
方案1:S3静态网站托管 + 重定向规则
- 创建与zyx.com同名的S3存储桶(例如
zyx.com),关闭默认的“阻止所有公开访问”(需确保后续配置仅允许重定向,而非公开存储内容) - 开启存储桶的“静态网站托管”,选择“重定向请求”选项:
- 目标域名填写
abc.com - 重定向协议选择
HTTPS - 在“重定向规则”中添加以下JSON配置,将所有请求重定向到
/cba路径:[ { "Condition": { "KeyPrefixEquals": "" }, "Redirect": { "HostName": "abc.com", "Protocol": "https", "ReplaceKeyPrefixWith": "cba/" } } ]
- 目标域名填写
- 在Route 53中为zyx.com创建别名类型的A记录,指向该S3存储桶的静态网站端点(注意选择对应区域的端点)
方案2:CloudFront + CloudFront Functions 重写URL
- 创建CloudFront分发,源站设置为
abc.com,并配置合适的缓存策略 - 在CloudFront控制台中创建一个CloudFront Function,写入以下重定向逻辑:
function handler(event) { const request = event.request; // 若请求路径不是目标路径,返回301重定向 if (request.uri !== '/cba' && request.uri !== '/cba/') { return { statusCode: 301, statusDescription: 'Moved Permanently', headers: { 'location': { value: 'https://abc.com/cba' } } }; } return request; } - 将该函数关联到CloudFront分发的“查看器请求”阶段
- 在Route 53中为zyx.com创建别名类型的A记录,指向CloudFront分发的域名
- 为zyx.com在AWS Certificate Manager(ACM)申请SSL证书,并绑定到CloudFront分发,确保HTTPS访问正常
方案3:Lambda@Edge 实现复杂重定向逻辑
如果需要更灵活的路径判断或业务逻辑,可使用Lambda@Edge替代CloudFront Functions:
- 创建一个Lambda函数(需在us-east-1区域创建),编写请求处理逻辑,返回重定向响应或修改请求路径
- 将Lambda函数关联到CloudFront分发的“查看器请求”或“源请求”阶段
- 后续Route 53的配置同方案2
注意事项
- 优先使用301永久重定向,有助于搜索引擎优化(SEO)
- 所有涉及自定义域名的HTTPS访问,都需要在ACM申请对应域名的证书,并正确绑定到分发或存储桶
内容的提问来源于stack exchange,提问作者Alcyeonnero
相关产品推荐
相关产品推荐

