将 www 子域重定向到 Route 53 上的顶级(裸)域(不使用 S3)?
Redirect www subdomain to an apex (naked) domain on Route 53 (not using S3)?
如何使用 Route53 和 CloudFront 将 www 子域重定向到顶级(裸)域?
请注意我没有使用 S3。
我的站点托管在 AWS ECS 服务上的 ELB 后面。
我已尝试使用以下设置创建记录集:
- Name: www
- Type: CNAME - Canonical name
- Alias: No
- TTL (Seconds): 300
- Value: example.com
在 CloudFront 中,我只将 example.com
顶点列入白名单。结果,请求被阻止。
我也试过在 CloudFront 中添加 www.example.com
条目并且站点解析了,但是浏览器没有重定向 example.com
如果您正在考虑使用 CloudFront 和 Route53 进行重定向,目前您必须编写一个 Edge Lambda for HTTP Response Generation 来重定向。
AWS 引入了 CloudFront functions,它可以操纵流经 CloudFront 的请求和响应。
要将 www 子域重定向到顶级域,您可以使用以下查看器请求函数:
function handler(event) {
var request = event.request;
var headers = request.headers;
var host = request.headers.host.value;
if (host.startsWith('www')) {
var response = {
statusCode: 301,
statusDescription: 'Moved Permanently',
headers: {
location: {
value: 'https://' + host.replace('www.', ''),
},
},
};
return response;
}
return request;
}
为了使此功能正常工作,需要为 CloudFront 分配配置 www 子域和 apex 域。您还需要使用子域和顶级域配置 Route 53。
对于整个 gTLD 已包含在 HSTS 预加载列表中的域(例如 .dev),无法使用 S3 进行重定向,因为 S3 网站不支持 https。
如何使用 Route53 和 CloudFront 将 www 子域重定向到顶级(裸)域?
请注意我没有使用 S3。 我的站点托管在 AWS ECS 服务上的 ELB 后面。
我已尝试使用以下设置创建记录集:
- Name: www
- Type: CNAME - Canonical name
- Alias: No
- TTL (Seconds): 300
- Value: example.com
在 CloudFront 中,我只将 example.com
顶点列入白名单。结果,请求被阻止。
我也试过在 CloudFront 中添加 www.example.com
条目并且站点解析了,但是浏览器没有重定向 example.com
如果您正在考虑使用 CloudFront 和 Route53 进行重定向,目前您必须编写一个 Edge Lambda for HTTP Response Generation 来重定向。
AWS 引入了 CloudFront functions,它可以操纵流经 CloudFront 的请求和响应。
要将 www 子域重定向到顶级域,您可以使用以下查看器请求函数:
function handler(event) {
var request = event.request;
var headers = request.headers;
var host = request.headers.host.value;
if (host.startsWith('www')) {
var response = {
statusCode: 301,
statusDescription: 'Moved Permanently',
headers: {
location: {
value: 'https://' + host.replace('www.', ''),
},
},
};
return response;
}
return request;
}
为了使此功能正常工作,需要为 CloudFront 分配配置 www 子域和 apex 域。您还需要使用子域和顶级域配置 Route 53。
对于整个 gTLD 已包含在 HSTS 预加载列表中的域(例如 .dev),无法使用 S3 进行重定向,因为 S3 网站不支持 https。