AWS CloudFront 和 S3,使用单一重定向处理 WWW 和 HTTPS
Posted
技术标签:
【中文标题】AWS CloudFront 和 S3,使用单一重定向处理 WWW 和 HTTPS【英文标题】:AWS CloudFront and S3, Handling WWW and HTTPS with a Single Redirect 【发布时间】:2020-04-02 08:06:56 【问题描述】:我正在尝试设置重定向,以便所有变体:http://example.com、http://www.example.com、https://example.com 重定向到https://www.example.com
我已经浏览了其他几个posts 并且它可以正常工作,只是我注意到重定向中有一些奇怪之处。
http://www.example.com -> 301 -> https://www.example.com 按预期工作
http://example.com -> 301 -> http://www.example.com -> 301 -> https://www.example.com场景一:有没有办法跳过第一个 301?
https://example.com -> 301 -> http://www.example.com -> 301 -> https://www.example.com场景2:它实际上首先重定向回http。有没有办法跳过第一个 301?
设置S3 两个桶:
托管网站的 www.example.com example.com,使用 https 协议重定向到 www.example.com。CloudFront 两种分布:
分布一
自定义来源:www.example.com.s3-website-us-west-2.amazonaws.com 备用 cname:www.example.com 查看器协议政策:将 HTTP 重定向到 HTTPS分布二
自定义来源:example.com.s3-website-us-west-2.amazonaws.com 备用 cname:example.com 查看器协议政策:HTTP 和 HTTPS53 号公路 例如.com 和 www.example.com 的 A 和 AAAA 记录分别指向它们各自的 Cloudfront 分布。
【问题讨论】:
【参考方案1】:用于分发二
自定义来源:example.com.s3-website-us-west-2.amazonaws.com 备用 cname:example.com 查看器协议策略:将 HTTP 重定向到 HTTPS
这样你就可以避免这个secanrio 2:
https://example.com -> 301 -> http://www.example.com -> 301 -> https://www.example.com
会是这样的
https://example.com -> https://www.example.com
场景1可以避免两次重定向,但你可以这样做
http://example.com -> 301 -> https://example.com -> 301 -> https://www.example.com
在使用 cloudfront
时,您不能忽略 301 重定向。
【讨论】:
更改只是为场景 1 创建第三个重定向http://example.com
-> https://example.com
-> http://www.example.com
-> https://www.example.com
对于场景 1 将是两次重定向,对于场景 2,它将减少到 1。因为当键入 example.com 到 example.com 时。在这里查看knabfinance.com redirectcheck.com/index.php
是的,您链接的站点是我希望它的行为方式,但是按照您的建议进行操作是行不通的。将分发 2 更改为将 HTTP 重定向到 HTTPS 不会影响方案 2,并导致方案 1 创建 3 个重定向。从逻辑上讲,这样做没有意义,因为我试图从https://example.com
重定向到https://www.example.com
,即https 到https,所以我不明白为什么使用HTTP 到HTTPS 会起作用。
编辑:我尝试使用您链接的网站来检查我网站上的重定向,它与您描述的行为相匹配。但是,在浏览器中使用网络控制台会显示正在发生的其他重定向。
提供您的域以检查发生了什么。在网络控制台中,我得到了相同的行为。以上是关于AWS CloudFront 和 S3,使用单一重定向处理 WWW 和 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS S3 网站 CloudFront 中设置别名重定向?
AWS CloudFront 如何遵循 S3 存储桶重定向规则?
javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)