相关疑难解决方法(0)

如何为Cloudfront上的静态托管网站的子目录设置默认根对象?

如何在Cloudfront上的静态托管网站上为子目录设置默认根对象?具体来说,我想www.example.com/subdir/index.html在用户要求时提供服务www.example.com/subdir.注意,这是用于提供在S3存储桶中保存的静态网站.此外,我想使用原始访问标识将对S3存储桶的访问限制为仅限Cloudfront.

现在,我知道的Cloudfront作品不同于S3和Amazon规定明确:

CloudFront默认根对象的行为与Amazon S3索引文档的行为不同.将Amazon S3存储桶配置为网站并指定索引文档时,即使用户请求存储桶中的子目录,Amazon S3也会返回索引文档.(索引文档的副本必须出现在每个子目录中.)有关将Amazon S3存储桶配置为网站和索引文档的更多信息,请参阅Amazon Simple Storage Service开发人员指南中的Amazon S3上的主机网站章节.

因此,即使Cloudfront允许我们指定默认的根对象,这只适用于www.example.com而不适用于www.example.com/subdir.为了解决这个难题,我们可以将原始域名更改为指向S3给出的网站端点.这很好用,可以统一指定根对象.不幸的是,这似乎与原始访问标识不相容.具体来说,以上链接指出:

切换到编辑模式:

Web分布 - 单击"起源"选项卡,单击要编辑的原点,然后单击"编辑".您只能为Origin Type为S3 Origin的原点创建原始访问标识.

基本上,为了设置正确的默认根对象,我们使用S3网站端点而不是网站存储桶本身.这与使用原始访问标识不兼容.因此,我的问题归结为两者

  1. 是否可以为Cloudfront上的静态托管网站的所有子目录指定默认根对象?

  2. 是否可以为从Cloudfront提供的内容设置原始访问标识,其中源是S3网站端点而不是S3存储桶?

amazon-s3 amazon-web-services amazon-cloudfront

77
推荐指数
8
解决办法
2万
查看次数

重定向到index子文件夹的S3子文件夹

我有一个域名example.com.我有一个名为example.comsetup 的S3存储桶,其中包含一个有效的index.html文件.现在,我想创建两个子文件夹名为oldnew,每个都包含一个单页应用程序的独立版本.请求https://example.com/old(我想省略在index.html浏览器的地址栏中输入请求时)将打开子文件夹index.html中的old文件并请求https://example.com/new打开index.html.执行这些重定向的最佳方法是什么?我应该在Route 53中设置一些东西example.com/old- > example.com/old/index.html还是有更好的方法吗?

amazon-s3 amazon-web-services amazon-cloudfront amazon-route53

14
推荐指数
5
解决办法
5378
查看次数

Next.js:托管在 AWS Cloudfront 上时,如何使链接与导出的站点一起使用?

我正在尝试通过执行静态 html 导出(即next export),然后将生成的输出复制到 AWS S3 并通过 Cloudfront 提供服务来获得原型 Next.js 项目。

我在/pages目录中有以下两页:

  • index.tsx
  • Pricing.tsx

然后,从路由 doco 开始,Link从索引页面向定价页面添加了一个,如下所示:

<Link href="/Pricing">
  <a>Pricing</a>
</Link>
Run Code Online (Sandbox Code Playgroud)

这会产生一个看起来像这样的链接example.com/Pricing(当您将鼠标悬停在它上面并单击该链接时,该页面确实会更改为定价页面,并且浏览器在 URL 栏中显示“example.com/Pricing”)。

问题是,该链接不是真实的 - 无法直接通过 url 栏添加书签或导航到它。

问题似乎是,当我执行 a 时next export,Next.js.html为每个页面生成一个文件,但路由器不使用这些.html后缀。

因此,在使用该站点时,如果用户尝试添加书签example.com/Pricing;稍后加载该书签将失败,因为 Cloudfront 将返回 404(因为 CF 只知道该.html文件)。

然后我尝试改变我Link的样子:

<Link href="/Pricing.html">
  <a>Pricing</a>
</Link>
Run Code Online (Sandbox Code Playgroud)

这会导致路由器使用example.com/Pricing.html并且与 Cloudfront 一起工作正常 - 但它实际上在本地开发期间导致 404(即使用next dev)!

我可以尝试的其他解决方法是 …

amazon-s3 amazon-web-services amazon-cloudfront next.js

2
推荐指数
1
解决办法
1906
查看次数