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

Ale*_*ley 9 html url-routing amazon-s3 amazon-web-services

我正在使用AWS S3托管一个静态网站(为了方便,易用,因为它太便宜了).

当我有多个HTML文件.我可以使用导航到他们/name_of_file.html.有没有办法路由HTML文件,所以URL说/name_of_file而不是?我不喜欢.html在我的网址中有扩展的丑陋,我宁愿避免做一个单页网站.

谢谢

Mic*_*bot 13

只要您将Content-type标题设置为上传文件,text/html如果您只是.html在上传时删除了扩展名,页面就可以正常工作.

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

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


更新(来自评论):

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

  • (在桶中)选择操作→上传
  • 点击"添加文件"
  • 在对话框中选择要上载的文件
  • 单击"设置详细信息"并选中任何适用的框
  • 点击"设置权限"并选中"公开所有内容"(如果适用)
  • 点击"设置元数据"
  • 点击"添加更多元数据"
  • 在"密钥"下拉列表中,选择"内容类型",然后在"值"框中键入"text/html" - 它不是提供的选项,但这只是一个常见类型列表并且没有限制你可以放在盒子里的东西.
  • 点击"开始上传"