使用pushState为backbone.js应用程序提供S3 web托管

S3 web hosting for backbone.js application with pushState

本文关键字:S3 web 托管 应用程序 pushState backbone js 使用      更新时间:2023-09-26

我使用自定义域名在AmazonS3上托管一个Backbone应用程序。主干应用程序路由器处理根("/")下的所有路由。我想使用pushState,所以在我的应用程序路由上不需要#前缀。基本上,我希望所有的子路由都由S3路由到域根,剩下的由Backbone来完成

我添加了以下规则:

<RoutingRules>
  <RoutingRule>
    <Condition>
    <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals >
     </Condition>
    <Redirect>
      <HostName>mydomain.com</HostName>
      <ReplaceKeyPrefixWith>#</ReplaceKeyPrefixWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>

但这只是给我的所有子路线添加了#符号前缀。我想避免这种情况。

如何在S3存储桶上设置重定向规则,以将所有内容路由到索引文档,而不必添加#?

你说"只是添加了#号",但实际上是加载index.html页面。这是因为www.example.com/#my-folder/my-page/whatever实际上正在加载/index.html并将#my-folder/my-page/whatever作为片段发送给浏览器。如果你在服务器上运行网站,你可以做到这一点,但不能在S3中运行。页面加载后,您可以使用推送状态来读取片段#my-folder/my-page/whatever并将其重写为my-folder/my-page/whatever,我相信这将实现您想要的。