如何告诉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上找到它们。
答案 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}} 是通过以下步骤:
/
享受
感谢这篇文章https://gist.github.com/bradwestfall/b5b0e450015dbc9b4e56e5f398df48ff