我正在托管一个具有多个子域的网站,这些站点都通过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并附加斜杠,但是这不起作用。感谢您的帮助!
答案 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和图像的路径从相对变为绝对,则可以更改。