有没有办法让 index.html 功能与托管在 S3 上的内容一起使用?
-
09-06-2019 - |
题
有没有办法让S3默认为index.html页面?例如。:我的存储桶对象列表:
/index.html
/favicon.ico
/images/logo.gif
致电 www.example.com/索引.html 效果很好!但如果有人打电话 www.example.com/ 我们会得到 403 或列出 XML 文档的 REST 对象,具体取决于存储桶级别 ACL 的配置方式。
那么,问题是:有没有办法让 index.html 功能与托管在 S3 上的内容一起使用?
解决方案
Amazon S3 现在支持 索引文件
这 索引文件 对于一个桶可以设置为类似的东西 index.html
. 。当访问站点的根目录或包含该名称的文档的子目录时,将返回该文档。
使用 aws cli 非常容易做到:
aws s3 website $MY_BUCKET_NAME --index-document index.html
您可以设置 索引文件 从 AWS 管理控制台:
其他提示
对于三年后仍在为此苦苦挣扎的人们,让我添加一些重要信息:
您网站的 URL(您必须将 DNS 指向该 URL)不是
<bucket_name>.s3-us-west-2.amazonaws.com
, , 但
<bucket_name>.s3-website-us-west-2.amazonaws.com
.
如果您使用第一个,无论您配置多少,它都不会按预期工作 索引文件.
对于具体示例,请考虑:
- http://www-example-com.s3.amazonaws.com/index.html 作品。
- http://www-example-com.s3.amazonaws.com/ 失败了
AccessDenied
. - http://www-example-com.s3-website-us-west-2.amazonaws.com/ 作品!
要获取您的真实网站地址,请访问您的 S3管理控制台, ,选择目标桶,然后 Properties
, , 然后 Static Website Hosting
. 。它将显示可用的网站 URL。
您可以通过 Amazon CloudFront 轻松解决该问题 关联. 。在 Amazon CloudFront,您可以修改根对象。您可以在这里下载管理器:m1.mycloudbuddy.com/downloads.html。
因为已经很长时间了,这个问题被问到,并且 Amazon S3 改变了他们的界面。我想用更新的屏幕截图来回答。
我们需要为 S3 启用“静态网络托管”以充当网络托管。- 转到属性 - >单击静态Web托管 - >选择“使用此存储桶托管网站” - 输入索引文档(默认情况下为index.html),错误文档和重定向规则(如果有)。
正如中所回答的 https://stackoverflow.com/a/24377823/3086531, ,虚拟主机链接将是
我建议阅读 这个线程 从 2006 年开始(关于 Amazon Web 服务开发人员连接)。似乎没有简单的解决方案。
是的。使用 AWS Cloudfront 可以让您分配默认文件。
您可以使用 dns webforwards 和 cloaking 来做到这一点。只需转发到index.html的完整路径
www.example.com 转发到 http://www.example.com.s3.amazonaws.com 并确保隐藏输出。