如何使用 Route 53 将裸(顶点)域重定向到 www?

Posted

技术标签:

【中文标题】如何使用 Route 53 将裸(顶点)域重定向到 www?【英文标题】:How do I redirect a naked (apex) domain to www using Route 53? 【发布时间】:2014-03-29 23:51:55 【问题描述】:

我需要使用 Route 53(必要时使用 S3)从 example.com 到 www.example.com 进行 301 重定向。有一些类似问题的解决方案,但它们要么没有解决如何redirect from the apex,要么只是don't work。

当我按照here 的步骤操作时,Route 53 告诉我无法将 CNAME 添加到***域。因此,我陷入了泥潭。

这看起来很简单,但亚马逊让它变得很难。任何帮助将不胜感激。

【问题讨论】:

HTTPS:在***.com/a/67222388查看我的回答 【参考方案1】:

我昨天才弄明白:

    转到您的 S3 控制台https://console.aws.amazon.com/s3/home,然后单击创建存储桶。对于 Bucket name,输入您的裸域名,例如对于 www.example.com,您只需输入 example.com。然后点击创建

    点击新存储桶的名称,然后点击属性 > 静态网站托管。在出现的菜单上选择重定向请求。对于目标存储桶或域,请输入完整的域,例如 www.example.com。对于 Protocol 输入所需的协议,http 或 https。点击保存

    导航至https://console.aws.amazon.com/route53/home 并单击左侧菜单中的托管区域,打开您的 Route 53 托管区域。选择您的域并点击创建记录集。将 Name 区域留空,并将默认类型保留为 A - IPv4 address。为 Alias 选择 Yes,然后单击 Alias Target 文本框。您可能需要稍等片刻才能看到出现填充的下拉菜单中的值。此时菜单应包含您在第 1 步和第 2 步中创建的 S3 网站端点。选择它。

最后,点击创建,享受您的新路由设置!

【讨论】:

要使其也适用于 SSL(example.com 重定向到 example.com),请参阅此博客文章:building.vts.com/blog/2015/11/02/… 这样做的缺点是您会丢失标题信息(推荐人等)。 是否有另一种方法可以保留 HTTP 标头? 我写了一篇深入的文章,介绍了目前如何使用云端和私有 S3 存储桶来执行此操作。 medium.com/@kylecalicast/… 要全面涵盖 HTTP 和 HTTP、裸和 www(所有 4 种情况)所需的所有重定向,请参阅***.com/a/67222388【参考方案2】:

尝试创建别名记录而不是 CNAME。

根据这个答案: RRSet of type CNAME with DNS name foo.com. is not permitted at apex in zone bar.com

【讨论】:

"当您想将查询从区域顶点(例如 example.com)重定向到具有 CNAME 类型的同一托管区域中的记录时(例如 zenith.example .com)." docs.aws.amazon.com/Route53/latest/DeveloperGuide/…【参考方案3】:

必要的步骤如下:

创建一个新的 Bucket 并将其命名为您的裸域名(例如:example.com)。 在存储桶属性中,选择“静态网站托管”并将其重定向到您的 www.example.com 域。点击“保存”。 转到您的 Route53 托管区域,并创建一条 A 记录。将其标记为别名,然后从下拉列表中选择您最近创建的存储桶。 你准备好了。

【讨论】:

注意:此方法仅适用于 HTTP - HTTPS 不起作用 对于 HTTPS,您需要使用 cloudfront 借助 cloudfront,您可以使用 lambda 边缘函数始终重定向到正确的域 要全面涵盖 HTTP 和 HTTP、裸和 www(所有 4 种情况)所需的所有重定向,请参阅***.com/a/67222388【参考方案4】:

如果您使用的是 Application Load Balancer,他们会添加对重定向的支持。您将您的区域顶点指向您的 ELB(使用别名)并让 ELB 重定向到 www.example.com

这似乎是比设置存储桶、添加静态托管、重定向等更好的解决方案。

https://aws.amazon.com/about-aws/whats-new/2018/07/elastic-load-balancing-announces-support-for-redirects-and-fixed-responses-for-application-load-balancer/

【讨论】:

[+/-] 专业人士: 您可以保留查询。 缺点: 1) S3 存储桶免费/非常便宜,但 ELB 至少 15 美元/月。 2) 此外,就在一个地方处理各种请求而言,搭载现有 ELB 可能不是一个好主意。【参考方案5】:

对于那些需要将裸域example.com重定向到www.example.com的人

最佳实践是创建一个新的负载均衡器

在端口 80 http 上使用侦听器,将 301 重定向到 www.example.com

如果您正在运行 https,只需在端口 443 上添加另一个侦听器,将 301 重定向到 www.example.com

一旦你完成了听众去

Route 53 > your domain> Create Record

将您的新负载均衡器指向重定向侦听器

记录名称:example.com

记录类型:A

别名:是

应用程序和负载均衡器的别名...

选择您的位置

选择您的新负载均衡器

保存并等待几分钟,现在所有对裸 example.com 的请求都将 301 重定向到 https 请求中包含的 www.example。

注意: 如果您想将 http 请求重定向到 https 请求,您需要执行相同的过程,但您需要为 https 设置转发侦听器而不是重定向侦听器。

【讨论】:

以上是关于如何使用 Route 53 将裸(顶点)域重定向到 www?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloudfront 将裸域重定向到 www?

将 www 子域重定向到 Route 53 上的顶点(裸)域(不使用 S3)?

Heroku/GoDaddy:将裸域发送到 www [关闭]

如何使用 Amazon Route 53 将子域重定向到特定页面?

如何将 Route 53 子域重定向到您网站的子目录

如何使用 Heroku / Amazon cloudfront / route 53 重定向