我使用 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)。
解决方案
请执行以下步骤来查找存储桶的网站终端节点:
- 打开 Amazon S3 控制台。
- 从存储桶列表中选择用于托管静态网站的存储桶。
- 选择属性视图,然后选择静态网站托管。
网站终端节点为作为 Endpoint 列出的值。
如果您使用了 Amazon CloudFront 分配功能并以 Amazon S3 为源,请执行以下步骤以将您的分配的默认根对象设置为索引页。
- 打开 CloudFront 控制台。
- 从分配列表中选择与 S3 存储桶关联的分配。
- 从常规视图中选择编辑。
- 对于默认根对象,请输入索引页的对象名称(例如,“index.html”)。
- 选择 Yes, Edit(是,编辑)。