移动到云端 + SSL 后,应用程序中的 React 路由器链接断开

React router links in app broken after move to cloudfront + SSL

我有一个 React 应用程序,使用托管在 S3 存储桶中的 react-router,使用 Route53 作为 DNS 提供程序。该应用程序在指向 S3 存储桶的 Route53 配置下运行良好。

因为我想使用 SSL,所以我创建了一个指向存储桶的 Cloudfront 分发,带有 SSL 证书,并将 DNS 指向它。自从这样做以来,none 的链接工作,(example.com 工作,但 example.com/foo 不工作)。它只是 returns 一个 NoSuchKey 错误。我知道这是不正确的,因为密钥肯定在那里,而且之前是有效的。

问题

  1. 大多数 网络服务器一样,如果存储桶不包含 URL 指定的对象,CloudFront/S3 将抛出 404。
  2. Unknown/unidentified 如果对象不可公开访问或没有正确的权限,它们将自动抛出 403

解决方案

当您的 Amazon S3 或自定义来源 return 为 HTTP 4xx 或 5xx 状态时,您可以让 CloudFront return 对象(例如 HTML 文件)代码到 CloudFront。您还可以指定来自源的错误响应或自定义错误页面在 CloudFront 边缘缓存中缓存的时间长度。

更多资源