站内链接打破S3重定向

问题描述 投票:0回答:1

我有一个使用S3和CloudFront的静态网站设置。当我导航到像example.com/nonexistant/这样的子文件夹时,我的example.com/index.html页面加载(我想要它),但它只是文本,我的所有站点内链接都搞砸了。

例如,我的徽标位于example.com/img/logo.png。当我导航到example.com/nonexistant/时,example.com/index.html的html加载,但它现在在example.com/nonexistant/img/logo.png上查找我的徽标。

所以像<img src="img/logo.png">这样的链接正在破坏,因为它正在从错误的目录开始搜索文件。

有没有一个解决方案,我可以修改我的重定向规则中的所有页面以/重定向到example.com?我知道我可能只是编辑我的代码让所有路径都显示为<img src="https://www.example.com/img/logo.png">,但我想知道这里是否有更容易修复。

编辑:我已经在CloudFront中设置404使用状态代码200转到/index.html,并在S3中将我的错误文档设置为index.html

amazon-s3 amazon-cloudfront filepath
1个回答
1
投票

在没有主机名的情况下将链接更改为绝对路径。

 <img src="/img/logo.png">

S3重定向规则只能匹配键前缀 - 字符串的左锚定部分,因此它们不能用于解决此问题。

您还可以在原始响应触发器中使用Lambda @ Edge函数,如果您确实想将以/结尾的路径的404响应重定向回主页,但重定向会重写地址栏中的路径(根据定义 - 否则) ,它不是“重定向”),我假设你正在进行404到200的转换,那么你可能正在做类似SPA的事情,你需要保持相同的路径,尽管index.html被显示。

© www.soinside.com 2019 - 2024. All rights reserved.