AWS S3 404与Ember应用程序使用历史记录位置

时间:2014-02-09 15:02:41

标签: amazon-web-services ember.js amazon-s3

如何告诉AWS S3为所有网页而不仅仅index.html提供/?如果我在任何子路由中输入应用程序,它目前返回404。我正在使用history位置。

我尝试使用此规则进行重定向:

<RoutingRules>
  <RoutingRule>
    <Condition>
    <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals >
     </Condition>
    <Redirect>
      <HostName>yourdomainname.com</HostName>
    </Redirect>
  </RoutingRule>
</RoutingRules>

这以重定向循环结束。

我尝试将错误文档设置为index.html。这不能加载静态资产,因为它试图在请求的URL而不是实际的根URL上找到它们。

3 个答案:

答案 0 :(得分:1)

我也偶然发现了这个问题,正如你所提到的那样,这是不可能的,但是我使用了这个问题的解决方法。

相反,使用“我的历史”位置命名空间,我使用了'hash'位置命名空间,并将请求重定向到我的哈希路径。

我的重定向规则

<RoutingRules>
    <RoutingRule>
        <Condition>
            <HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
        </Condition>
        <Redirect>
            <HostName>bucketname-website-us-east-1.amazonaws.com</HostName>
            <ReplaceKeyPrefixWith>#/</ReplaceKeyPrefixWith>
        </Redirect>
    </RoutingRule>
</RoutingRules>

这种方式如果用户在浏览器中手动输入网址,则用户将转到右页。

答案 1 :(得分:0)

只需将错误位置更改为index.html,无需重定向规则

答案 2 :(得分:0)

如果您使用 CloudFront 来托管 s3 网站,无论如何,您可能应该使用 CloudFront 在重新加载非索引路由(如 404 或类似的非 {{})时摆脱 www.google.com/about 的有效方法1}} 是通过以下步骤:

  1. 转到您的 CloudFront 分配
  2. 转到错误页面
  3. 使用以下参数创建一个新的错误页面:
/

享受

感谢这篇文章https://gist.github.com/bradwestfall/b5b0e450015dbc9b4e56e5f398df48ff