我有一个网站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
即
此后,链接www.example.com起作用,并且http://example.com被重定向到www.example.com。
但是对于网站内部的页面(例如www.example.com/about),仅输入http://example.com/about无效,并且不会重定向到www.example.com/about。
大多数博客建议改用AWS Route53。这是唯一的选择吗?
答案 0 :(得分:0)
您已经发现,问题在于DNS级别的重定向在特定于页面的级别上不起作用。至少,并非没有一些额外的魔力在后台发生(某些注册商实现了)。
即使设置 did 有效,您仍然需要解决一些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。
对于Apache
,NGINX
和Windows Server
,有多种实现方法。 Amazon has a reference article详细介绍了一些实现方法。在此处复制本文的详细信息超出了IMO的范围。
因此,要回答您的问题:53号公路不是您的唯一选择。您绝对可以使用所需的任何注册商或DNS主机。问题是您需要重新考虑整个方法,并专注于服务器级别的规则,而不是DNS级别的规则。我不是专家,觉得这样做很烦人,所以希望有人会采用一种更有见地的方法。