如何在AWS中将.net、.co.uk及.org域名重定向至.com域名
解决多域名重定向到主.com域名的方案
我来帮你搞定这个多域名重定向的问题——S3单桶的重定向选项确实只能指定一个目标,没法直接处理多个非.com域名,但有两种靠谱的方案可以实现你的需求,下面给你详细拆解:
方案一:为每个非.com域名创建独立的S3重定向桶
这个方法比较直观,适合域名数量不多的情况,每个非.com域名对应一个专门用来做重定向的S3桶:
- 创建匹配域名的S3桶:分别为
.co.uk、.net、.org域名创建S3桶,桶名必须和域名完全一致(比如你的域名是example.co.uk,桶名就得是example.co.uk)。注意如果用静态网站托管,建议选择us-east-1区域,因为这个区域的静态网站端点格式更标准,Route53别名支持更顺畅。 - 配置桶的重定向规则:
- 进入每个桶的“属性”页,找到“静态网站托管”选项,选择“Use this bucket to host a website”。
- 切换到“Redirect requests for an object”模式,在“Target bucket or domain”里填入你的主.com域名(比如
example.com)。 - 协议选择
https(和你的主站保持一致,确保重定向后是安全链接),然后勾选“Redirect all requests to another host name”,这样不管用户访问非.com域名的哪个路径,都会自动重定向到.com域名的对应路径。
- 配置Route53解析:为每个非.com域名在Route53中创建A记录和AAAA记录,类型选择“Alias”,目标指向对应S3桶的静态网站端点(注意是带
-website-的那个端点,不是REST API端点)。 - 确认DNS生效:确保你已经在123-reg把这些域名的DNS服务器改成了Route53的NS服务器,这样Route53的记录才能生效。
方案二:用CloudFront + Lambda@Edge统一处理重定向
如果不想创建多个S3桶,这个方案更适合集中管理,通过CloudFront的边缘函数来统一判断并处理重定向:
- 更新CloudFront配置:
- 把所有非.com域名添加到CloudFront分配的“备用域名(CNAMEs)”列表里。
- 确保你的ACM证书(必须在
us-east-1区域申请)包含所有需要的域名(可以用通配符证书,比如*.example.com加上具体的非.com域名,或者直接包含所有域名)。
- 创建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; const targetDomain = 'example.com'; // 替换成你的主.com域名 // 检查当前域名是否不是主域名 if (!host.endsWith(`.${targetDomain}`) && host !== targetDomain) { // 构造重定向URL,保留原路径和查询参数 const redirectUrl = `https://${targetDomain}${request.uri}${request.querystring ? `?${request.querystring}` : ''}`; const response = { status: '301', statusDescription: 'Moved Permanently', headers: { location: [{ key: 'Location', value: redirectUrl }] } }; callback(null, response); } // 如果是主域名,正常转发请求到S3源 callback(null, request); }; - 关联Lambda函数到CloudFront:把这个Lambda函数关联到CloudFront分配的“Viewer Request”事件上,这样每个请求到达CloudFront边缘节点时,都会先经过这个函数处理。
- 配置Route53解析:为所有非.com域名创建A/AAAA别名记录,指向CloudFront分配的域名。
注意事项
- 优先使用301永久重定向,这对SEO更友好,告诉搜索引擎把非.com域名的权重转移到主.com域名上。
- 如果用S3重定向桶,不需要给桶设置公开访问权限,因为所有请求都会被重定向,不会返回桶内的内容。
- ACM证书必须覆盖所有需要的域名,否则CloudFront会返回SSL错误。
内容的提问来源于stack exchange,提问作者Andy Furniss
相关产品推荐
相关产品推荐

