3

如何将所有请求重定向到我的静态 AWS S3 网站到 index.html,以便我可以使用 AngularJS 的 HTML5 模式?

我最近了解到(令我欣喜若狂)可以通过使用HTML5 Mode#来使用 AngularJS 而不在 URL 中。但是,我从这个答案中知道这需要在服务器上进行一些设置,因为所有请求都必须重定向到正确的 html 文件(在本例中为 )才能正常工作。index.html

我为我的网站使用 AWS S3 的静态网站托管。我尝试将此添加到我的重定向规则中:

<RoutingRules>
     <RoutingRule>
         <Redirect>
             <ReplaceKeyWith>/</ReplaceKeyWith>
         </Redirect>
     </RoutingRule>
</RoutingRules>

<RoutingRules>
     <RoutingRule>
         <Redirect>
             <ReplaceKeyWith>index.html</ReplaceKeyWith>
         </Redirect>
     </RoutingRule>
</RoutingRules>

但我遇到了太多重定向的问题。

有没有办法通过静态网站托管在 AWS S3 中进行必要的重定向?

4

1 回答 1

10

您可以将 AWS CloudFront 用于您的用例。在 CloudFront 后面设置 S3 存储桶并将 index.html 添加为默认路由。

如果页面以角度路径(例如 /home)刷新,AWS CloudFront 将在 S3 中搜索 /home.html 文件并返回 404:未找到响应。但是有一个解决方法,您可以为 404: Not Found HTTP 错误代码设置自定义错误响应,以指向 /index.html 响应页面路径。

在此处输入图像描述

在此处输入图像描述

有关更多详细信息,请参阅博客文章使用 AWS CloudFront 提供托管在 S3 上的 SPA

于 2017-10-14T15:41:30.320 回答