amazon-web-services - 如何在 AWS S3 支持的网站中重定向裸 URL?
问题描述
我将在 S3 上托管一个静态网站。问题是 S3-as-a-web-server 背后的 Web 引擎没有转换http://example.com/hello/
为http://example.com/hello/index.html
.
在配置网站时,有一个根文档(调用时会显示的那个http://example.com
)的规定,但没有任何更深的 URL(例如我的示例)。
是否可以使用重定向规则来实现这一目标?
我实际上有一个解决这个问题的方法,但是真的很复杂:
- 在 S3 存储桶上托管网站
- 部署源自该存储桶的 CloudFront 实例
- 使用 Lambda@Edge 将在调用 CloudFront 后重写调用
我希望有一些更直接的东西(我对重定向规则抱有希望,尽管“重定向”表明已经实现了某些东西,但在我的问题中并非如此,因为 S3 似乎不理解是什么http://example.com/hello/
。
解决方案
当您指定默认索引文件并希望在子路径中提供 index.html 时,您需要在每个级别都有 index.html。
S3 的文档指定以下内容
如果您在存储桶中创建这样的文件夹结构,那么您必须在每个级别都有一个索引文档。当用户指定类似于文件夹查找的 URL 时,尾部斜杠的存在与否决定了网站的行为。例如,以下 URL 带有尾部斜杠,返回 photos/index.html 索引文档。
http://example-bucket.s3-website-region.amazonaws.com/photos/但是,如果您从前面的 URL 中排除尾部斜杠,Amazon S3 首先会在存储桶中查找对象照片。如果未找到照片对象,则搜索索引文档 photos/index.html。如果找到该文档,Amazon S3 将返回 302 Found 消息并指向 photos/ 键。对于对 photos/ 的后续请求,Amazon S3 返回 photos/index.html。
或者,如果您想要服务器 index.html 的所有路径,此线程可能很有用
推荐阅读
- node.js - 如何在 pug 模板中迭代这个 mongodb json
- php - PHP + MySQL:如何知道 UPDATE 查询何时与 WHERE 语句不匹配?
- python-3.x - redis - 如何创建事务
- quartz.net - 如何在 IIS 中优雅地结束带有 ASP.NET Core 2.2 作业的 Quartz 3.0.x?
- arduino - 软件序列号不显示任何内容(SIM 800L)
- ios - 为什么节点被添加到 ARKit 中检测到的平面下方
- azure - granfana 可以从 Azure 时序见解数据库中读取数据吗?
- c++ - 捕获所有类异常
- c - For 循环条件不满足,不知道为什么
- python - 在不更改原始列名的情况下合并 pandas DataFrames