首页  >  问答  >  正文

S3静态网站托管:将所有路径重定向至index.html

我正在使用 S3 托管一个将使用 HTML5 PushStates 的 JavaScript 应用程序。问题是,如果用户为任何 URL 添加书签,它就不会解析为任何内容。我需要的是能够接受所有 url 请求并在我的 S3 存储桶中提供根 index.html,而不仅仅是执行完整重定向。然后我的 JavaScript 应用程序可以解析 URL 并提供正确的页面。

有没有办法告诉 S3 为所有 URL 请求提供 index.html,而不是进行重定向?这类似于设置 apache 通过提供单个 index.html 来处理所有传入请求,如本例所示:https://stackoverflow.com/a/10647521/1762614。我真的很想避免仅仅为了处理这些路由而运行网络服务器。从 S3 开始做所有事情都非常有吸引力。

P粉127901279P粉127901279386 天前670

全部回复(1)我来回复

  • P粉231112437

    P粉2311124372023-10-16 19:14:41

    在 CloudFront 的帮助下,无需 URL hack 即可轻松解决该问题。

    • 创建S3存储桶,例如:react
    • 使用以下设置创建 CloudFront 分配:
      • 默认根对象:index.html
      • 源域名:S3 存储桶域,例如:react.s3.amazonaws.com
    • 转到错误页面标签,点击创建自定义错误响应
      • HTTP 错误代码:403:禁止(404:未找到,如果是 S3 静态网站)
      • 自定义错误响应:是
      • 响应页面路径:/index.html
      • HTTP 响应代码:200:正常
      • 点击创建

    回复
    0
  • 取消回复