我如何告诉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条答案
按热度按时间vyswwuz21#
我也偶然发现了这个问题,正如你提到的,这是不可能的,但有一个解决这个问题的方法,我用。
我使用'hash'位置名称空间,而不是使用'history'位置名称空间成员,并将请求重定向到我哈希路由
我的重定向规则
这样,如果用户在浏览器中手动输入URL,则会将用户带到正确页面
fiei3ece2#
只需将错误位置更改为index.html,无需重定向规则
nx7onnlm3#
如果你使用CloudFront来托管s3网站,你可能应该这样做,无论如何,在重载非索引路由(如
www.google.com/about
或类似的非/
)时摆脱404
的有效方法是通过以下步骤:1.转到您的CloudFront分发
1.转到错误页
1.使用以下参数创建新的错误页:
享受
这篇文章的学分https://gist.github.com/bradwestfall/b5b0e450015dbc9b4e56e5f398df48ff