Cloudfront 不使用尾部斜杠重定向



>我正在托管一个网站,其中包含来自 S3 存储桶的多个子域,通过 Cloudfront。 当我转到www.domain.com/subdomain/时(注意:带有尾部斜杠(,网站加载正确并从www.domain.com/subdomain/****.js获取缩小的.js和.css文件。

但是,如果我导航到没有尾部斜杠的www.domain.com/subdomain,网站的索引.html仍然会提供,但资产会尝试从www.domain.com/****.js中获取。

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

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

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

重定向函数示例如下

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 和图像的路径从相对更改为绝对路径,如本答案顶部所述。

最新更新