AWS CloudFront中的单页应用程序

Bid*_*yut 11 javascript amazon-s3 amazon-web-services amazon-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>
Run Code Online (Sandbox Code Playgroud)

我的S3存储桶重定向规则如下:

<RoutingRules>
    <RoutingRule>
        <Condition>
            <KeyPrefixEquals>*/</KeyPrefixEquals>
        </Condition>
        <Redirect>
            <ReplaceKeyWith>index.html</ReplaceKeyWith>
        </Redirect>
    </RoutingRule>
</RoutingRules>
Run Code Online (Sandbox Code Playgroud)

Kar*_*oos 13

如果您的单页网站正确处理404,您只需使用您的发行版的自定义错误页面覆盖默认的CloudFront设置即可index.html.

您可以在Error Pages分发的选项卡中进行设置,它看起来像这样:

在此输入图像描述