【发布时间】:2020-02-17 01:06:21
【问题描述】:
我有一个 AWS S3 存储桶;我们称之为example.com。我为静态网站托管配置了存储桶;例如,存储桶静态站点 URL 可能是 http://example.com.s3-website-us-west-1.amazonaws.com。我还有一个带有 AWS 托管证书的 CloudFront 分配,因此当我访问 https://example.com/ 时,它会从 S3 存储桶 http://example.com.s3-website-us-west-1.amazonaws.com/ 中提供内容。这一切都像做梦一样。
在我的网站上,我有一个文件 https://example.com/foo.html 已重命名为 https://example.com/bar.html。网络上的其他一些页面可能链接到 foo.html,因此在我的 S3 存储桶配置中,我为 foo.html 对象设置了重定向,如下所示:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>foo.html</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>bar.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
当我尝试浏览到 http://example.com.s3-website-us-west-1.amazonaws.com/foo.html 时,它会发送一个 HTTP 301 永久重定向到 bar.html,所以我最终会到达 http://example.com.s3-website-us-west-1.amazonaws.com/bar.html,就像我预期的那样。
所以现在我将 S3 存储桶部署到 CloudFront 分配,如上所述。 CloudFront 状态显示“已部署”后,我浏览到 https://example.com/foo.html,预计会重定向到 https://example.com/bar.html。不好了;我被定向到http://example.com.s3-website-us-west-1.amazonaws.com/foo.html insetad!
为什么 CloudFront 分配会将我重定向回文字 S3 存储桶 URL?为什么对象不重定向到正确部署到 CloudFront 的同一存储桶中的相对对象?
请注意,我知道另一个问题 AWS Cloudfront redirecting to S3 bucket,但 这似乎不是这个问题的重复问题,因为另一个问题是指整个 CloudFront站点临时重定向到整个 S3 存储桶,而不是单个 S3 对象重定向失败以部署到 CloudFront。
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-cloudfront