Amazon s3 使用S3重定向中断站点内链接

Amazon s3 使用S3重定向中断站点内链接,amazon-s3,amazon-cloudfront,filepath,Amazon S3,Amazon Cloudfront,Filepath,我已经用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/

我已经用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上查找我的徽标

因此,像这样的链接正在断开,因为它正在从错误的目录开始搜索文件

是否有一种解决方案,可以修复重定向规则中的某些内容,使所有页面都以/redirect to example.com结尾?我知道我可能只是去编辑我的代码,让所有路径都显示为,但我想知道这里是否有一个更简单的修复方法


编辑:我已经在CloudFront中设置了404进入/index.html,状态代码为200,并在S3中设置了我的错误文档为index.html,将链接更改为绝对路径,不带主机名

 <img src="/img/logo.png">
S3重定向规则只能匹配键前缀(字符串的左锚定部分),因此不能使用它们来解决此问题

你也可以使用Lambda@Edge函数在源响应触发器中起作用,如果您确实希望将404响应重定向到以主页为结尾的路径,但重定向会根据定义重写地址栏中的路径-否则,它不是重定向,我假设,由于您正在执行404到200的转换,那么您可能正在执行类似SPA的操作,尽管显示index.html,但仍需要保持路径不变。

将链接从path/to/file.png更改为/path/to/file.png是修复方法。这个错误实际上与S3或Cloudfront无关。谢谢