将 AngularJS HTML5Mode 的所有 AWS S3 http 请求重定向到 index.html
Redirect all AWS S3 http requests to index.html for AngularJS HTML5Mode
如何将对我的静态 AWS S3 网站的所有请求重定向到 index.html,以便我可以使用 AngularJS' HTML5 模式?
我最近了解到(令我无限高兴的是)可以使用 URL 中没有 #
的 AngularJS,方法是使用 HTML5 Mode. However, I know from this answer,这需要一些在服务器上设置,因为所有请求都必须重定向到正确的 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 中进行必要的重定向?
您可以将 AWS CloudFront 用于您的用例。在 CloudFront 后面设置 S3 存储桶并添加 index.html 作为默认路由。
仍然,如果页面在 angular 路由(例如 /home)中刷新,AWS CloudFront 将在 S3 中搜索 /home.html 文件和 return 404:未找到回复。但是有一个解决方法,您可以为 404 设置自定义错误响应:未找到 HTTP 错误代码指向 /index.html 响应页面路径。
有关详细信息,请参阅博客 post Using AWS CloudFront to serve an SPA hosted on S3。
如何将对我的静态 AWS S3 网站的所有请求重定向到 index.html,以便我可以使用 AngularJS' HTML5 模式?
我最近了解到(令我无限高兴的是)可以使用 URL 中没有 #
的 AngularJS,方法是使用 HTML5 Mode. However, I know from this answer,这需要一些在服务器上设置,因为所有请求都必须重定向到正确的 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 中进行必要的重定向?
您可以将 AWS CloudFront 用于您的用例。在 CloudFront 后面设置 S3 存储桶并添加 index.html 作为默认路由。
仍然,如果页面在 angular 路由(例如 /home)中刷新,AWS CloudFront 将在 S3 中搜索 /home.html 文件和 return 404:未找到回复。但是有一个解决方法,您可以为 404 设置自定义错误响应:未找到 HTTP 错误代码指向 /index.html 响应页面路径。
有关详细信息,请参阅博客 post Using AWS CloudFront to serve an SPA hosted on S3。