Cloudfront不会使用斜杠重定向

时间:2020-06-24 17:47:48

标签: amazon-web-services amazon-s3 amazon-cloudfront

我正在托管一个具有多个子域的网站,这些站点都通过Cloudfront从S3存储桶中获得。 当我转到www.domain.com/subdomain/(请注意:带有斜杠)时,网站将正确加载并从www.domain.com/subdomain/****.js中提取缩小的.js和.css文件。

但是,如果我导航到www.domain.com/subdomain时没有结尾的斜杠,则该站点的index.html仍可使用,但是尝试从www.domain.com/****.js提取资产。

我尝试使用lamba @ edge函数来更改请求uri并附加斜杠,但是这不起作用。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是由html引用相对文件路径(即src="****.js"src="/subdomain/****.js")引起的。

如果要解决此问题,则需要在用户浏览器中执行到斜杠路径的重定向。这可以通过使用Lambda @ Edge函数在Origin Response事件中执行重定向来完成。

下面有一个example redirect函数

 def lambda_handler(event, context):
 
     # Generate HTTP redirect response with 302 status code and Location header.
     
     response = {
         'status': '302',
         'statusDescription': 'Found',
         'headers': {
             'location': [{
                 'key': 'Location',
                 'value': 'http://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html'
             }]
         }
     }
     
     return response

为此,您需要添加自定义逻辑,以通过检查请求的最后一个字符“ /”来检查是否需要重定向URL。

此外,如本答案顶部所指出的,如果您可以将css,js和图像的路径从相对变为绝对,则可以更改。

相关问题