为S3上的所有404请求返回index.html而不是重定向

时间:2018-04-12 15:37:36

标签: amazon-web-services amazon-s3

在单页面应用程序中,通常使用路由机制,其中所有内容都保存在index.html中,Javascript通过在浏览器中显示正确的内容而不是实际发送任何请求来管理URL寻址。对此的唯一要求是在服务器端,指向不存在的条目的所有URL都应返回index.html页面。我正试图用S3做到这一点。

所以,长话短说,我已经设置了一个存储我网站静态内容的S3存储桶,我甚至设法通过输入以下规则将指向不存在文件的所有网址重定向到index.html存储桶的重定向规则框:

<RoutingRules>
  <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyWith></ReplaceKeyWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>

并且还授予公众列出该桶项目的许可。所以一切看起来都不错,但事实并非如此。

使用给定的规则,我要求AWS将我的所有请求重定向到/,而我需要的是AWS应该返回(没有重定向)任何URL的index.html内容不匹配现有文件。

这可能吗?有谁知道如何为指向不存在的文件的所有URL返回index.html

1 个答案:

答案 0 :(得分:2)

您可以将所有4XX错误重定向到index.html,方法是将其置于静态网站托管下的错误文档配置中。

参考:https://serverless-stack.com/chapters/create-an-s3-bucket.html#enable-static-web-hosting