我使用 Amazon S3 存储桶来托管我的静态网站。为何该存储桶返回对象列表而不是网站的索引页?

我正在使用 Amazon Simple Storage Service (Amazon S3) 存储桶来托管静态网站。当我向该存储桶发送请求时,我会看到一个 XML 对象列表,而不是我为我的网站设置的索引页。为什么会发生这种情况? 我如何让 Amazon S3 返回索引页?

简短描述

Amazon S3 存储桶具有网站终端节点和 REST API 终端节点。网站终端节点使用以下格式:

bucket-name.s3-website-us-west-2.amazonaws.com

REST API 终端节点使用以下格式:

bucket-name.s3-us-west-2.amazonaws.com

如果您向存储桶发送了一个 GET 请求,则必须将该请求发送到网站终端节点,以便让 Amazon S3 返回索引页(在 Amazon S3 控制台中称为“索引文档”)。如果您向 REST API 终端节点发送了一个 GET 请求,Amazon S3 将在存储桶中返回一个对象列表

如果使用具有 Amazon S3 源的 Amazon CloudFront 分配,则您也必须将索引页设置为默认根对象才能确保 Amazon S3 返回索引页。

重要提示:终端节点因 AWS 区域不同而不同。有关按区域列出的网站终端节点,请参阅 Amazon Simple Storage Service 网站终端节点。有关按区域列出的 REST API 终端节点的列表,请参阅 AWS 区域和终端节点 - Amazon Simple Storage Service (Amazon S3)

解决方案

请执行以下步骤来查找存储桶的网站终端节点:

  1. 打开 Amazon S3 控制台
  2. 从存储桶列表中选择用于托管静态网站的存储桶。
  3. 选择属性视图,然后选择静态网站托管
    网站终端节点为作为 Endpoint 列出的值。

如果您使用了 Amazon CloudFront 分配功能并以 Amazon S3 为源,请执行以下步骤以将您的分配的默认根对象设置为索引页。

  1. 打开 CloudFront 控制台
  2. 从分配列表中选择与 S3 存储桶关联的分配。
  3. 常规视图中选择编辑
  4. 对于默认根对象,请输入索引页的对象名称(例如,“index.html”)。
  5. 选择 Yes, Edit(是,编辑)

这篇文章对您有帮助吗?


您是否需要账单或技术支持?