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

Meh*_*ran 3 amazon-s3 amazon-web-services

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

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

<RoutingRules>
  <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyWith></ReplaceKeyWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>
Run Code Online (Sandbox Code Playgroud)

并且还授予公众列出该桶的项目的权限。所以一切似乎都很好,但事实并非如此。

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

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

Gab*_*leu 5

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

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

  • 为此,您可以添加 CloudFront 分配:https://serverless-stack.com/chapters/create-a-cloudfront-distribution.html#custom-error-responses (3认同)