AWS CloudFront 默认根对象和子目录

AWS CloudFront 默认根对象和子目录

我在 S3 和 CloudFront 上托管了一个 Jekyll 博客。在 S3 上设置默认文档效果很好,所有子文件夹都直接转到 index.html。

在我的 CloudFront 发行版中,我已将默认根对象设置为 index.html,但子目录没有获得此对象 - 相反,我收到以下错误

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>about</Key>
<RequestId>F8324894C093EB53</RequestId>
<HostId>
Girhbo7YLEl9sxPS3KjvhbkpL32qNsYgiVLElAhPOvqrekfqfpJ/2AAYRg4rNJ+t4Imc86cjiw4=
</HostId>
</Error>

如果我手动浏览到 domain/subdir/index.html,它可以正常工作。

有任何想法吗?

答案1

当使用具有网站托管功能(可启用索引文档)的 S3 存储桶时,您不想使用存储桶的 REST 端点,这是 CloudFront 将在控制台中为您提供的。您需要输入网站端点。

在创建分发页面上,对于源设置,在源域名框中键入存储桶的 Amazon S3 静态网站托管终端节点,例如:example.com.s3-website-us-east-1.amazonaws.com

重要的

请勿从列表中选择您的存储桶的名称,例如example.com.s3.amazonaws.com

http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-cfdist.html

您还可以关闭 CloudFront 中的默认根对象配置。此设置不需要这样做。

请记住,更改传播后,您可能会缓存错误响应几分钟。检查X-CacheAge响应标头以确定您是否看到缓存的响应以及该响应缓存了多长时间。

相关内容