当前位置: 首页 > 知识库问答 >
问题:

AWS S3+CloudFront静态网站子目录不工作

包嘉懿
2023-03-14

我试图将一个静态网站安装到S3中,使用自定义域,并使用CloudFront处理HTTPS。

问题是根路径可以正常工作,而子路径不能正常工作。

显然,所有这些都与默认根对象有关,我在这两个地方都将其配置为index.html。

    null

即使Index.html的副本出现在安装目录中,CloudFront也不会返回默认的根对象

如果将发行版配置为允许CloudFront支持的所有HTTP方法,则默认根对象将应用于所有方法。例如,如果您的默认根对象是index.php,并且您编写应用程序向域的根提交POST请求(http://example.com),那么CloudFront将该请求发送到http://example.com/index.php。

CloudFront默认根对象的行为不同于Amazon S3索引文档的行为。当您将Amazon S3 bucket配置为网站并指定索引文档时,Amazon S3将返回索引文档,即使用户请求bucket中的子目录。(索引文档的副本必须出现在每个子目录中。)有关将Amazon S3 bucket配置为网站和索引文档的更多信息,请参见Amazon Simple Storage Service Developer Guide中的Amazon S3上的托管网站一章。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCloudFrontAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXXXX"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::example.com/*"
        }
    ]
}

谢谢。

共有1个答案

弘浩瀚
2023-03-14
    null

我留下了一些有用的链接,以防其他人面临同样的问题:

  • 有用的Reddit线程
  • AWS lambda@edge+cloudfront由AWS在这里解释
  • 修复我在这里遇到的Lambda错误
  • 此处说明所有安装过程
 类似资料:
  • 如何在CloudFront上为静态托管的网站上的子目录设置默认根对象?具体地说,我希望每当用户请求时,就提供。注意,这是为了交付一个保存在S3桶中的静态网站。此外,我希望使用一个origin访问标识来限制对S3 bucket的访问,仅允许CloudFront访问。 因此,尽管Cloudfront允许我们指定默认根对象,但这只适用于,而不适用于。为了绕开这个困难,我们可以将起源域名改为指向S3给出的

  • 使用静态网站构建工具不但可以让我们构建静态网站的工作大大简化,而且还可以迅速验证自己的想法,以最高效的方式开发网站。 这一章中将分别介绍三款流行的开源静态网站构建工具,然后说明为什幺我们选择使用Hugo来构建静态网站。 对比 下面是三款静态网站构建工具的简要对比: 工具名称 开发语言 构建效率 典型用例 特点 jekyll ruby 比较慢 GitHub Pages默认的静态网站构建工具、kube

  • 静态网站构建工具简介 Jekyll简介 Hexo简介 Hugo简介

  • cmf_get_root() 功能 获取网站根目录 参数 无 返回 string 一般情况为空,如果网站部署在二级目录不为空,返回结果不带/

  • Hugo是由Steve Francis基于Go语言开发的静态网站构建工具。

  • Hexo是一款使用node.js开发的静态网站构建工具,便于构建华丽绚烂的页面。