提问者:小点点

S3静态网站主机将所有路径路由到index.html


我正在使用S3托管一个javascript应用程序,该应用程序将使用HTML5 pushStates。问题是,如果用户为任何URL添加书签,它将无法解析为任何内容。我需要的是接收所有url请求并在S3桶中提供根index.html的能力,而不是仅仅进行完全重定向。那么我的javascript应用程序就可以解析URL并提供适当的页面。

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


共1个答案

匿名用户

在CloudFront的帮助下,无需url攻击就可以很容易地解决这个问题。

  • 创建S3存储桶,例如:React
  • 使用以下设置创建CloudFront发行版:
    • 默认根对象:index.html
    • 来源域名:S3 bucket Domain,例如:react.S3.amazonaws.com
    • HTTP错误代码:403:禁止(404:找不到,如果是S3静态网站)
    • 自定义错误响应:是
    • 响应页路径:/index.html
    • HTTP响应代码:200:OK
    • 单击“创建”