我正在为我的 VueJs SPA 应用程序使用 AWS S3 静态 Web 托管。我在 S3 中设置了路由规则,当我使用 S3 静态托管 url 访问它时,它工作得很好。但是,我还配置了 CloudFront 以将其与我的自定义域一起使用。由于单页应用程序需要通过index.html进行路由,因此我在cloudfront中设置了自定义错误页面以将404错误重定向到index.html。所以现在我在 S3 中设置的路由规则不再有效。
让 S3 路由规则与 SPA 的 CloudFront 自定义错误页面设置配合使用的最佳方式是什么?
最佳答案
我想我有点晚了,但无论如何,这里是,
显然,如果您使用 S3 REST_API 端点 (example-bucket.s3.amazonaws.com) 作为 CloudFront 分配的来源,则无法执行此操作,您必须使用 S3 提供的 S3 网站 URL 作为来源(例如- Bucket.s3-网站-[区域].amazonaws.com)。此外,对象必须是公共(public)的,您无法将存储桶锁定到按源策略分配。
所以,
- 对象必须是公开的。
- 必须启用 S3 存储桶网站选项。
分发源必须来自 S3 网站 URL,而不是其余 api 端点。
编辑:
我错了,实际上,您也可以使用 REST_API 端点来完成此操作,您只需在 CloudFront 发行版中创建自定义错误响应,可能仅适用于 404 和 403 错误代码,将“自定义错误响应”选项设置为"is",将响应页面路径设置为“/index.html”,将HTTP响应代码设置为“200”。如果您使用控制台,您可以在发行版和错误页面选项卡中找到该选项。
关于amazon-s3 - AWS S3 静态托管 : Routing rules doesn't work with cloudfront,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075001/