我正在使用AWS S3托管一个静态网站(为了方便,易用,因为它便宜)。静态网站上的多个页面AWS S3
当我有多个HTML
文件。我可以使用/name_of_file.html
导航到他们。有没有办法路由HTML
文件,所以URL代替/name_of_file
?我不喜欢在我的网址中有一个.html
扩展程序的丑陋,我宁愿避免做单页网站。
感谢
我正在使用AWS S3托管一个静态网站(为了方便,易用,因为它便宜)。静态网站上的多个页面AWS S3
当我有多个HTML
文件。我可以使用/name_of_file.html
导航到他们。有没有办法路由HTML
文件,所以URL代替/name_of_file
?我不喜欢在我的网址中有一个.html
扩展程序的丑陋,我宁愿避免做单页网站。
感谢
只要你上传的文件与Content-type
头设置为text/html
时,页面会正常工作,如果你只是消除.html
拓客年底,当你上传。
否则,想到的唯一选择是使用S3 Redirects,但只允许您“导航到”页面,而不在最后使用.html - 但随后您会看到浏览器重定向到.html命名的文件和.html仍将显示在地址栏中,因此可能不是赢家。
或者 - 这可能相当长,但也许值得一提 - 您可以通过运行HAProxy或其他反向代理服务器的EC2实例来请求请求,并重写(不重定向)不包含点的请求以附加' .html“,但是这样做并没有解除”易用性“方面的问题 - 尽管它可以允许您承载比每个帐户限额100个存储桶多得多的网站,如果您需要,可以保留多个网站“site”放在一个存储桶中,并为每个请求的对象路径附加一个前缀。在同一个AWS区域内的EC2和S3之间的数据传输是免费的,所以这不会产生额外的带宽费用 - 只是实例本身的成本。
更新(从注释):
的AWS控制台可能是因为选择的Content-Type作为元数据键略微反直觉那么只有提出几个选择,包括文字/平原,文本/ RTF但不是文本/ HTML ...但“价值”下拉列表只提供建议。在这里,任何半明智的东西都会被接受。
您是不是指HTML中的Content-type头?这不是用HTML5弃用吗? –
不在HTML中...实际HTTP标头中的Content-Type标头,当它向对象发送GET或HEAD请求时,将被发送到浏览器。这些标题与S3中的对象一起存储。在控制台中查看你的对象的元数据,你会看到我指的是什么。上传文件时,控制台似乎会从扩展名中“猜出”相应的标题,但您也可以手动设置。 –
@AlexChumbley感谢您的接受。我接受了你的第一个建议,从文件名中删除了扩展名并在S3中设置了“Content-Type”标题? –