2014-04-29 105 views
0

我在Amazon S3上使用自定义域名托管Backbone应用程序。 Backbone应用程序路由器处理根目录下的所有路由('/')。我想使用pushState,所以在我的应用程序路由上不需要#前缀。基本上,我希望所有的子路由被S3路由到域根,让骨干完成剩下的工作。S3 web hosting for backbone.js应用程序pushState

添加以下规则:

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

但是,这只是增加了#号前缀我所有的子路径。我想避免这种情况。

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

回答

0

你说“只是增加了#号”,但实际上是加载了index.html页面。这是因为www.example.com/#my-folder/my-page/whatever实际上是加载/index.html并将浏览器#my-folder/my-page/whatever作为片段。如果您在服务器上运行网站,但不在S3中,则可以这样做。您可以在页面加载后使用push-state来读取片段#my-folder/my-page/whatever并将其重写为my-folder/my-page/whatever,我相信这会实现您要查找的内容。

+0

令人失望。我希望避免为静态内容运行我自己的Web服务器,并完全依赖S3 Web托管功能。 – elynch