当我使用 s3 和 cloudfront 时如何将 example.com 重定向到 www.example

how can I redirect example.com to www.example when I use s3 and cloudfront

我正在使用 AWS Cloudfront 分发我的主页。

http://www.example.com, https://example.com, http://example.com

所有三个 URL 都必须重定向到主 url https://www.example.com.

问题是 https://example.com 域重定向失败。

我在 s3 上创建了一个 www.example.com 存储桶,并使用 SSL 证书(用户 aws 证书管理器)将其分发到云端。我将云端端点连接到 route53 使用的 www.example.com url。所以 http://www.example.com => https://www.example.com 重定向是成功的。

然后我在 s3 上创建了一个 example.com 存储桶并移动到属性 > 静态网站托管 > 重定向请求然后设置目标存储桶 = www.example.com 和协议 = https

结果是http://example.com成功重定向到https://www.example.com,但是 https://example.comhttps://www.example.com 连接失败。

你有没有解决同样的问题?

谢谢。

更新我的云端设置

根据我的经验,我打赌我能猜出这里发生了什么。在 CloudFront 中的 Origin 配置中,您可以将 Origin Protocol Policy 设置为使用 HTTPHTTPSMatch Viewer 连接到源。如果您将其设置为 Match Viewer,它将尝试通过 HTTPS 连接到您域的 S3 静态托管,这可能会出现问题。相反,将其设置为 HTTP 然后事情可能会起作用。

此外,您可能希望将 example.com 分配与 www.example.com 分配分开,因为 CloudFront 通常根据路径区分与来源相关的行为。

这是我的解决方法,

SSL 证书:

example.com
*.example.com

CloudFront 分配 1:

CNAME example.com 
Certificate: example.com
Viewer Protocol Policy -- Redirect HTTP to HTTPS
Origin and Behaviour --
   To S3 Bucket to redirect
   Redirect to https://www.example.com

CloudFront 分配 2:

CNAME www.example.com 
Certificate: www.example.com
Viewer Protocol Policy -- Redirect HTTP to HTTPS

另外,请注意 *.example.com 证书与 example.com 证书不匹配。