AWS CloudFront 中的单页应用程序
Single Page Application in AWS CloudFront
我有一个托管在 AWS 存储桶中的单页静态网站。
申请是JavaScript.
我已经设置了 Cloudfront 来提供内容。
该网站的内容托管在 AWS S3 存储桶中,Cloudfront 用于为不同位置的用户提供更快的 Web 内容交付。
但是在设置网站后我遇到了一个问题。如果我刷新页面,它会抛出错误,因为密钥不存在。
我无法刷新页面或复制 URL 并将其粘贴到浏览器的另一个选项卡中以访问同一页面。
我收到以下错误:
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>__build__/home</Key>
<RequestId>36941111717B2006</RequestId> <HostId>wfLt17lDjXhZLqCxRM2zOiDIJSF03/HKdL3V9Oeq3r1glowmlZpavRj0zzBzBgXlXZudiXoc=</HostId>
</Error>
而我的S3 buckets重定向规则如下:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>*/</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>index.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
如果您的单页网站可以正确处理 404,您可以简单地使用您的分发的自定义错误页面覆盖默认的 CloudFront 设置,这就是您的 index.html
.
您可以在 Error Pages
选项卡中为您的发行版设置它,它看起来像这样:
我有一个托管在 AWS 存储桶中的单页静态网站。 申请是JavaScript.
我已经设置了 Cloudfront 来提供内容。 该网站的内容托管在 AWS S3 存储桶中,Cloudfront 用于为不同位置的用户提供更快的 Web 内容交付。
但是在设置网站后我遇到了一个问题。如果我刷新页面,它会抛出错误,因为密钥不存在。 我无法刷新页面或复制 URL 并将其粘贴到浏览器的另一个选项卡中以访问同一页面。
我收到以下错误:
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>__build__/home</Key>
<RequestId>36941111717B2006</RequestId> <HostId>wfLt17lDjXhZLqCxRM2zOiDIJSF03/HKdL3V9Oeq3r1glowmlZpavRj0zzBzBgXlXZudiXoc=</HostId>
</Error>
而我的S3 buckets重定向规则如下:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>*/</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>index.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
如果您的单页网站可以正确处理 404,您可以简单地使用您的分发的自定义错误页面覆盖默认的 CloudFront 设置,这就是您的 index.html
.
您可以在 Error Pages
选项卡中为您的发行版设置它,它看起来像这样: