ember.js AWS S3 404与使用历史位置的Ember应用程序

r8uurelv  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(133)

我如何告诉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中找到它们。

vyswwuz2

vyswwuz21#

我也偶然发现了这个问题,正如你提到的,这是不可能的,但有一个解决这个问题的方法,我用。
我使用'hash'位置名称空间,而不是使用'history'位置名称空间成员,并将请求重定向到我哈希路由
我的重定向规则

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

这样,如果用户在浏览器中手动输入URL,则会将用户带到正确页面

fiei3ece

fiei3ece2#

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

nx7onnlm

nx7onnlm3#

如果你使用CloudFront来托管s3网站,你可能应该这样做,无论如何,在重载非索引路由(如www.google.com/about或类似的非/)时摆脱404的有效方法是通过以下步骤:
1.转到您的CloudFront分发
1.转到错误页
1.使用以下参数创建新的错误页:

HTTP Error Code: 404
    TTL: 0
    Custom Error Response: Yes
    Response Page Path: /index.html
    HTTP Response Code: 200

享受
这篇文章的学分https://gist.github.com/bradwestfall/b5b0e450015dbc9b4e56e5f398df48ff

相关问题