AmazonS3 bucket在访问索引时以XML形式转储整个内容

AmazonS3 bucket在访问索引时以XML形式转储整个内容,xml,amazon-web-services,amazon-s3,Xml,Amazon Web Services,Amazon S3,所以发生了一些奇怪的事情,我为静态网站托管设置了AWS S3 bucket,一切都很好,但每当我进入纯域(例如:“test.com”),它都会返回一个XML文件错误,然后转储该XML中的所有内容。它看起来像,但是其他的域,比如“test.com/test”都可以工作。。我将index.html设置为我的bucket中的索引,并且似乎所有内容都已正确配置。有什么帮助吗 此外,转到“test.com/index”实际上显示的索引很好,只有当您转到“test.com”时,它才会给出XML错误。当您设置

所以发生了一些奇怪的事情,我为静态网站托管设置了AWS S3 bucket,一切都很好,但每当我进入纯域(例如:“test.com”),它都会返回一个XML文件错误,然后转储该XML中的所有内容。它看起来像,但是其他的域,比如“test.com/test”都可以工作。。我将index.html设置为我的bucket中的索引,并且似乎所有内容都已正确配置。有什么帮助吗


此外,转到“test.com/index”实际上显示的索引很好,只有当您转到“test.com”时,它才会给出XML错误。

当您设置S3静态网站宿主时,bucket名称必须与域名完全匹配。如果你想支持多个域名,那么你需要多个bucket

假设您希望在S3上托管mywebsite.com和www.mywebsite.com。您需要创建两个bucket“mywebsite.com”和“www.mywebsite.com”。然后为每个域名/存储桶对创建两个Route53条目

您可以将一个网站重定向到另一个网站


既然这样做有效:
test.com/index
但这不起作用:
test.com
听起来你上传了一个名为
index
的索引文件,而不是
index.html
。在这种情况下,您需要确保S3 bucket的静态网站配置中的索引文档设置是
index
,而不是默认值
index.html
,这是您当前所配置的

或者,如果bucket中的其他文件夹中已经有
index.html
,这似乎是因为您说过
test.com/test
有效,那么您只需将根
index
文件重命名为
index.html
,您有两个问题:

  • 您错误配置了bucket ACL或策略,以允许每个人列出bucket中的对象
如何列出桶中的对象?您将转到桶的其余端点的根。。。因此,您看到的不是XML“错误”——而是一个桶列表

这反过来又暴露了第二个问题:

  • 您已将域配置为指向REST端点,而不是网站宿主端点
网站托管功能仅可从网站端点使用


以下是我为我的网站修复此问题的方法:-您可能需要在cloudfront中正确设置“默认根对象”,它应该是“index.html”,而不是空的。

您认为此xml转储有多危险@Mr程序从该URL中删除路径,如果您看到bucket中所有对象列表的第一页,那么我建议这是一个不安全的配置,除非其目的是列出所有内容。路径的哪一部分?@Mr程序路径是
…s3.amazonaws.com
之后的所有内容删除所有内容在那之后。错误访问被拒绝,尝试删除路径的几个部分,所有的部分似乎都被拒绝访问,这至少是好的