我正在尝试设置从 apex 域example.com
到www.example.com
route53、cloudfront 和 s3 的重定向。
我在网上看过很多关于这个话题的教程和讨论,但对我来说都没有什么用。而且我也不清楚到底要创建什么记录在路线53中。
目前我有,
ALIAS A example.com www.example.com
ALIAS A www.example.com abcdefg.cloudfront.net
根据此设置中的建议视频教程以及其他许多人。
这不起作用所以我还尝试添加.htaccess
以下内容
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
但这也没用。
很多人还建议使用 CNAME 记录,但在我看来,这显然行不通,并在此答案中提到为什么不能在域名的顶点(又称根)使用 CNAME 记录?。
答案1
两个概念混在一起了。DNSALIAS
中的记录只会影响如何example.com
解析 IP 地址。你所做的与
ALIAS A example.com abcdefg.cloudfront.net
ALIAS A www.example.com abcdefg.cloudfront.net
它实际上不会重定向 Web 浏览器。重定向将由 Web 服务器引起。
您对文件的理解是正确的.htaccess
,但通常只有 Apache Web 服务器才能处理文件中的规则.htaccess
。S3 不是 Apache Web 服务器,并且此链接表明.htaccess
S3 上的文件中的规则未被处理。
如果已处理,则问题中的规则将重定向访问者从 www.example.com
到 example.com
,而您的问题表明您想要做相反的事情。因此,将www.
从RewriteCond
移到 行RewriteRule
。同样,如果 S3 没有查看 中的规则.htaccess
,那么无论您在那里放置什么都不会导致您想要的重定向。
您可能应该研究其他不使用的重定向方法.htaccess
,例如此处描述的方法或者如果您需要更全面的规则处理,请使用功能更齐全的 HTTP 服务器而不是 S3。