Javascript Lambda和Cloudfront URL重写

Javascript Lambda和Cloudfront URL重写,javascript,Javascript,仅使用lambda从cloudfront cdn重写url的正确方法是什么, 比如说 有什么特别的把戏吗 提前谢谢 var domain = https://domain/channel/?id=12345; var replaced = domain.replace('?id=', ''); console.log(replaced); 这将记录: https://domain/channel/12345 你会想用一个Lambda@Edge功能 要快速删除查询字符串标识符,请使用以下命令。

仅使用lambda从cloudfront cdn重写url的正确方法是什么, 比如说

有什么特别的把戏吗

提前谢谢

var domain = https://domain/channel/?id=12345;
var replaced = domain.replace('?id=', '');
console.log(replaced);
这将记录:

https://domain/channel/12345

你会想用一个Lambda@Edge功能

要快速删除查询字符串标识符,请使用以下命令。 您可以将其作为“访问者请求”python lambda运行,并将其部署到cloudfront发行版

这样,它将查看查询字符串,对值执行替换,然后执行302重定向。这样,您的Cloudfront发行版仍然可以利用边缘位置的缓存属性,而不必向您的源服务器发出多个请求

从urllib.parse导入解析,urlencode
def lambda_处理程序(事件、上下文):
请求=事件['Records'][0]['cf']['request']
打印(“查询字符串:”,请求[“查询字符串”])
id=请求[“查询字符串”]。替换('?id=','')
答复={
“状态”:“302”,
'statusDescription':'Found',
“标题”:{
“地点”:[{
“键”:“位置”,
“价值”:https://domain/channel/id
}]
}
}
返回响应

当你说lambda时,你是指lambda表达式还是AWS lambda?还是别的什么?您好,谢谢您的回复,它是AWS lambdaOkay,我将取消删除我的答案,因为您可以在Lambda上运行JS。这是否以相反的方式工作,比如说,如果用户请求,它是否可以仅在nginx中重定向到它应该是:rewrite^/channel/(.*)$/link.php?di=$1 last;但是,我完全处于静态html的cdn之下。可能吗?我不明白你的第二个问题。关于第一个,您需要不同的代码来完成这项工作。是否要将用户请求重写为静态html/js,以便在cdn环境中无需使用php/nginx/etc(仅静态html)即可轻松解析它?可能吗?非常感谢你的回复