Amazon CloudFront不尊重我的S3网站存储区的index.html规则

我正在使用静态网站托pipe选项在Amazon S3上托pipe一个静态网站,以便S3将呈现一个文件夹而不会明确指向我的index.html文件。

例如,下面是直接链接到我的S3存储桶中的一个页面: http : //new.rdegges.com.s3-website-us-east-1.amazonaws.com/category/2009/正如你所看到的,当您访问该URL后,Amazon S3会自动呈现该目录中的index.html文件,从而使我拥有干净的URL。

这一切都在S3上正常工作。 我遇到的问题是让Amazon Cloudfront正确处理这种行为。 当我创build一个以我的S3存储桶指定为原点的Cloudfront Distribution,并告诉它使用“index.html”作为根时,S3刚刚停止工作的index.html行为。

例如,这里是我在Cloudfront上面的同一个URL: http ://d1mj00c6pby3gc.cloudfront.net/category/2009/

不幸的是,上面的URL不起作用,但如果我手动指定索引文件,它会,例如: http : //d1mj00c6pby3gc.cloudfront.net/category/2009/index.html

我的问题是:我如何configurationCloudfront以使其能够尊重我的网站的S3存储桶设置?

S3网站function可以与Amazon CloudFront结合使用。 但是,S3网站使用与常规S3存储桶不同的域名。 在这种情况下,您需要将CloudFront分配的原始configuration的Origin Domain Name设置为new.rdegges.com.s3-website-us-east-1.amazonaws.com

您可以从S3上的“静态网站托pipe”面板获取此URL(端点):

S3上的静态网站托管面板

一旦CloudFront指向S3网站的域名,S3网站的function应该可以正常工作。

我想在接受的答案中添加一些内容。

首先,确保你的云端有一个Default Root Object 。 如文档中所述,这不适用于subdirectories

在build立一个新的cloudfront分布时,它会让你select你的bucket bucket-name.s3.amazonaws.com 。 请注意,该地址未在url中指定。 你需要做的是从s3抓取静态网站的url,并使用它作为origin url (该地区将在那里)。