使用 Name.Com DNS 设置 AWS Beanstalk - URL 重定向不起作用

Posted

技术标签:

【中文标题】使用 Name.Com DNS 设置 AWS Beanstalk - URL 重定向不起作用【英文标题】:Setting up AWS Beanstalk with Name.Com DNS - URL redirection doesn't work 【发布时间】:2019-11-17 03:56:06 【问题描述】:

我有一个网站 www.example.com,它托管在 elastic-beanstalk 上。我正在使用 name.com DNS 服务器。我已按照以下博客中的步骤设置 https 和 URL 设置:

https://colintoh.com/blog/map-custom-domain-to-elastic-beanstalk-application https://medium.com/@jbesw/tutorial-adding-https-to-a-custom-domain-on-elastic-beanstalk-29a5617b8842

    创建一个 CNAME,将 www.example.com 指向 beanstalk 将@.example.com 的URL 重定向添加到https://www.example.com

在此之后,链接 www.example.com 有效,http://example.com 被重定向到 www.example.com。

但是对于网站内的页面,例如 www.example.com/about,仅输入 http://example.com/about 是行不通的,并且不会被重定向到 www.example.com/about。

大多数博客都建议迁移到 AWS Route 53。这是唯一的选择吗?

【问题讨论】:

【参考方案1】:

正如您所发现的,问题在于 DNS 级别的重定向在页面特定级别上不起作用。至少,在后台发生了一些额外的魔法(一些注册商实施了)。

即使该设置确实有效,您仍然需要处理一些 SEO 问题。例如,您希望 example.com > www.example.com 重定向到(在我知道的任何情况下)成为 301 重定向。这让像 Google 这样的搜索引擎知道“请仅使用此页面的 www 版本。”否则,您实际上有两个页面漂浮在那里,其中任何一个(或两个)都可以被索引并被视为彼此重复的内容。

使用Route 53 服务器当然是一种选择,但您不必使用。问题是您需要在服务器级别而不是 DNS 级别执行此操作

在服务器级别,您可以指定更复杂和更精细的重定向规则,例如“将任何非 www、非 https 流量发送到 www、https 版本的页面,并指示这是永久偏好 (301)”该重定向(在 Apache 服务器上)如下所示:

RewriteEngine On

RewriteCond %HTTPS !=on [OR]
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteRule ^(.*)$ https://www.HTTP_HOST%REQUEST_URI [R=301,L,NE]

快速参考:NC 表示不区分大小写的匹配。 R 指定重定向类型(此处为 301),NE 指定不转义许多 URL 方案中使用的 #? 等字符。有关 Apache RewriteRules 期间使用的标志的完整列表,read this webpage。

ApachenginxWindows Server 有不同的方法来实现此目的。 Amazon has a reference article 详细介绍了一些实现方法。在此处复制文章的详细信息超出了您问题 IMO 的范围。

所以,回答您的问题:Route 53 不是您唯一的选择。您绝对可以使用您喜欢的任何注册商或 DNS 主机。问题是您需要完全重新考虑您的方法并专注于服务器级别的规则而不是 DNS 级别的规则。我不是专家,并且觉得这样做很烦人,所以希望有人会以更有洞察力的方法加入。

【讨论】:

以上是关于使用 Name.Com DNS 设置 AWS Beanstalk - URL 重定向不起作用的主要内容,如果未能解决你的问题,请参考以下文章

是否可以为 AWS 公共 DNS EC2 实例设置 SSL

AWS证书管理器DNS验证方法不适用于API

AWS Route53 DNS 故障转移设置上的临时反转主要 <=> 次要

AWS Elastic Beanstalk 外部 DNS 未正确路由

即使 SSH 工作,AWS 公共 DNS 也不会加载

静态网站托管中子域的 AWS S3 存储桶重定向与 DNS CNAME