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 和 HTTPS

53 号公路 例如.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 CloudFront 重定向到 S3 存储桶

如何在 AWS S3 网站 CloudFront 中设置别名重定向?

AWS CloudFront 如何遵循 S3 存储桶重定向规则?

javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)

Amazon S3 重定向和 Cloudfront

AWS CloudFront 重定向到路径