静态网站AWS S3上的多个页面

时间:2013-11-26 19:41:09

标签: html amazon-web-services amazon-s3 url-routing

我正在使用AWS S3托管静态网站(为方便起见,易于使用,因为它非常便宜)。

当我有多个HTML文档时。我可以使用/name_of_file.html导航到他们。有没有办法路由HTML文件,以便URL显示/name_of_file?我不喜欢在我的网址中添加.html扩展名的丑陋,我宁愿避免使用单页网站。

由于

1 个答案:

答案 0 :(得分:12)

只要您将Content-type标题设置为text/html的文件上传,如果您在上传时将页面排除在.html之后,页面就能正常运行。

否则,我想到的唯一选择就是使用S3 Redirects,但这只会让您“导航到”最后没有.html的页面 - 但您随后会看到浏览器重定向到.html命名的文件,.html仍将显示在地址栏中,因此可能不是赢家。

或者 - 这是相当长的一段时间,但也许值得一提 - 您可以通过运行HAProxy或其他反向代理服务器的EC2实例并重写(不重定向)不包含要追加的点的请求来汇集请求。 html'到最后,但是这种方式解除了“易用性”方面 - 虽然它可以允许你托管比每个帐户限制100个桶更多的网站,如果你需要,通过保留多个“站点“在一个存储桶中,并为每个请求的对象路径添加前缀。在同一AWS区域内的EC2和S3之间的数据传输是免费的,因此这不会产生额外的带宽费用 - 只是实例本身的成本。


更新(来自评论):

AWS控制台可能有点违反直觉,因为选择Content-Type作为元数据Key然后只建议一些选择,包括text / plain和text / rtf但不是text / html ...但是“Value”drop -down列表仅提供建议。在这里,任何半懂事都将被接受。

  • (在桶中)选择操作→上传
  • 点击“添加文件”
  • 在对话框中选择要上传的文件
  • 点击“设置详细信息”并检查所有适用的框
  • 点击“设置权限”并选中“公开所有内容”(如果适用)
  • 点击“设置元数据”
  • 点击“添加更多元数据”
  • 在“密钥”下拉列表中,选择“内容类型”,然后键入 “值”框中的“text / html” - 它不是提供的选项,但这只是常见类型的列表,并不限制您可以放在框中的内容。
  • 点击“开始上传”