javascript - AWS CloudFront 中的单页应用程序

标签 javascript amazon-web-services amazon-s3 amazon-cloudfront

我有一个托管在 AWS 存储桶中的单页静态网站。 该应用程序是 JavaScript。

我已经设置了 Cloudfront 来提供内容。 该网站的内容托管在 AWS S3 存储桶中,Cloudfront 用于为不同位置的用户提供更快的 Web 内容交付。

但是在设置网站后我遇到了一个问题。如果我刷新页面,它会抛出错误,因为 key 不存在。 我无法刷新页面或复制 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 选项卡中进行设置,它看起来像这样:

enter image description here

关于javascript - AWS CloudFront 中的单页应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38475329/

相关文章:

javascript - 如何在 javascript 中循环遍历 JSON 关联数组?

amazon-web-services - 具有多个域的 AWS ELB ssl

amazon-web-services - 如何授予 EFS 挂载目标对本地 DataSync 代理的访问权限?

javascript - 使用nodejs将文件上传到s3

javascript - 返回类构造函数的函数的类型声明

javascript - 使用ajax无法在post中获取Formdata

javascript - 如何设置 Origin 请求 header

amazon-web-services - 亚马逊 mws api,我将订单状态更改为返回,但仍然从 API 发货

java - JetS3t更新内容\mime类型

ruby-on-rails - 外部 I18n 语言环境路径 (AWS)