【问题标题】:Returning index.html for all the 404 requests on S3 instead of redirecting为 S3 上的所有 404 请求返回 index.html,而不是重定向
【发布时间】:2018-09-22 20:21:48
【问题描述】:

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

所以,长话短说,我已经设置了一个 S3 存储桶来保存我网站的静态内容,我什至通过在 桶的重定向规则

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

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

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

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

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

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

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

    【讨论】:

    • 尽管这样可行,但我希望会有更好的解决方案,因为响应仍然是404。谢谢。
    • 为此,您可以添加 CloudFront 分配:serverless-stack.com/chapters/…
    猜你喜欢
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    相关资源
    最近更新 更多