Amazon S3桶不会将文件夹URL重定向到index.html

61次阅读
没有评论

问题描述

在将HUGO静态网站上传到AWS S3桶中后,发现无法通过URL访问资源。例如,https://www.example.com可以正常访问,但无法访问https://www.example.com/posts/。用户希望能够自动将链接重定向到对应的html文件,而不必每次手动重定向。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

CloudFront实际上没有这个功能。你可以通过设置DefaultRootObject将根对象https://www.example.com/重定向到https://www.example.com/index.html,但对于子目录(如https://www.example.com/posts/)没有类似的功能。
但是,你可以使用Lambda@Edge或CloudFront Functions在CloudFront上运行任意代码,因此我们可以自己添加此功能。通过“origin request”触发器,我们可以重写请求到S3,将/posts/更改为/posts/index.html这个链接提供了一些很好的处理路径的示例,适用于Hugo。亚马逊文档中有一个示例,展示了如何使用CloudFront Functions实现相同的功能。
另一种选择是在配置中启用uglyurls,这样站点内的所有链接都会在其中硬编码index.html

方案2

这是一个不错的想法,但正如@Alexandre在上面所说,这个答案解决了问题https://stackoverflow.com/questions/49082709/redirect-to-index-html-for-s3-subfolder。这真是让人头疼的问题,一个直观的功能需要Lambda Edge!?

正文完