AWS CloudFront 和 S3,使用单一重定向处理 WWW 和 HTTPS

AWS CloudFront and S3, Handling WWW and HTTPS with a Single Redirect

我正在尝试设置重定向,以便所有变体:
http://example.com, http://www.example.com, https://example.com
重定向到 https://www.example.com

我已经经历了其他几个 并让它工作,除了我注意到重定向中的一些奇怪之处。

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
场景二:实际上是先重定向回http。有没有办法跳过第一个 301?

设置
S3
两个桶:

CloudFront
两个分布:

53 号公路
example.com 和 www.example.com 的 A 和 AAAA 记录均指向各自的 Cloudfront 分布。

分配二

自定义来源: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

场景一可以避免二次跳转,但你也可以这样做

http://example.com -> 301 -> https://example.com -> 301 -> https://www.example.com

使用 cloudfront 时无法忽略 301 重定向存在一些限制。