代码之家  ›  专栏  ›  技术社区  ›  dev7

S3静态宿主-不带index.html的路径[重复]

  •  3
  • dev7  · 技术社区  · 8 年前

    这个问题已经有了答案:

    我们有多个角度项目,我们喜欢快速上传到S3进行质量保证和测试。 我们将它们全部上传到不同子文件夹中的同一个存储桶中。因此S3桶结构如下:

     -- tests-bucket
        -- project1
           -- index.html
        -- project2
           -- index.html
    

    然后我们有一个云前端分布和路由器53设置,例如tests.domain.com。

    当通过完整路径访问项目时,一切都正常:

    tests.domain.com/project1/index.html
    tests.domain.com/project2/index.html
    

    但是,当我们尝试访问不带index.html的项目时( tests.domain.com/project1 tests.domain.com/project1/ )我们得到以下错误:

    <Error>
    <Code>NoSuchKey</Code>
    <Message>The specified key does not exist.</Message>
    <Key>index.html</Key>
    <RequestId></RequestId>
    <HostId></HostId>
    </Error>
    

    这使得我们很难测试,因为在初始页面加载之后, index.html 自动删除,任何额外的重新加载都将导致404错误。

    bucket设置为服务网站静态托管,索引和错误文档都指向 index.html文件 .

    CloudFront发行版也被设置为具有404错误路径重定向到index.html。

    似乎这个设置只对bucket的根路径有效 tests.domain.com/index.html 但不支持子目录。

    This AWS article 这似乎是可能的,但在我们的情况下,它不适用于SPA/角应用程序。

    通过对此的快速研究,我发现 this tutorial 它使用一个lamda-edge重定向解决了这个问题,但是设置似乎有点过分,而且似乎只支持美国东部的分布。

    是否有任何简单的配置可以解决这个问题,只使用不涉及lambda函数的S3/CloudFront/Route53?