没有 .html 扩展名的 S3 静态页面

新手上路,请多包涵

在为 Amazon S3 提供静态站点时,我想知道如何摆脱每个页面的 .html 文件扩展名。

现在我有:

 mysite.com/             # works fine, serves index.html
mysite.com/mypage.html  # works fine
mysite.com/mypage       # doesn't work

/mypage 的错误显示:

 404 Not Found

Code: NoSuchKey
Message: The specified key does not exist.
Key: mypage
RequestId: 1089D7A26EFED9AD
HostId: Ud8cFy8Zl1mJ+oFjFOmU1Xacq9+v70KuaJfOc4nFMEPhd66AkLhr4Pj5u0QH6Gog

我已经尝试将 Content-Type 设置为 text/html ,根据 这篇文章,但它并没有解决我的问题。

我如何获得 /mypage /mypage.html 在 S3 上的 — 提供文件?

原文由 Tyler 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 515
2 个回答

我刚遇到这个问题,我想分享解决方案:

您必须将文件的元数据 Content-type 设置为 text/html 并重命名文件删除 .html

这样您就可以在没有文件扩展名的情况下访问每个页面。

原文由 André Lucas 发布,翻译遵循 CC BY-SA 3.0 许可协议

通常在 Amazon S3 上,要创建干净的 URL,您可以:

  1. 上传具有“干净”名称的页面文件,例如 mypage 并将 Content-Type 设置为 text/html (如您链接到的帖子所述)。您必须在上传文件之前在您的系统上重命名该文件以使其没有扩展名,或者在上传后在 S3 上 重命名 而没有扩展名。 S3 上的文件名 不能 有扩展名。

  2. 创建一个名称为“干净”的文件夹,并将页面文件上传到该文件夹,并将其名称设置为 默认索引文档,例如 index.html 。您需要检查默认索引文档名称是什么。这是在您将存储桶配置为网站时设置的,但可以稍后更改。

如果您无法完成上述工作,您可以使用名称键 mypage 上传一个新的零字节对象,然后通过指定具有值的 Website Redirect Location 键来设置页面重定向 mypage.html 在上传过程中的元数据中。请参阅 Amazon S3 文档中的配置网页重定向。

您还可以将文件复制到名为 mypage 的新对象,并将 --- Content-Type 设置为 text/html

原文由 jamtin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题