![haproxy 重定向保留查询字符串](https://linux22.com/image/602559/haproxy%20%E9%87%8D%E5%AE%9A%E5%90%91%E4%BF%9D%E7%95%99%E6%9F%A5%E8%AF%A2%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我可以配置 haproxy 将以 /video1?autoplay=1 结尾的 URL 重定向到其他 URL 但保留查询字符串值吗?
例如
http://domain.com/video1?autoplay=1
需要重定向到
http://newdomain/video/1?autoplay=1
我可以使用 acl 来匹配 /video1,但不知道如何丢弃查询字符串左侧的所有内容
提前致谢
答案1
您可以重定向并保留查询字符串:
acl path_video1 path /video1
http-request redirect location /video/1?%[query] if path_video1
如果你想任何数字来工作(例如/video234
),它只是稍微复杂一些:
acl path_video path_reg ^/video[\d+]
http-request redirect location %[path,regsub(/video,/video/,)]%[query] if path_video
这将使用正则表达式匹配数字部分,然后简单地替换/video
为/video/
,并保留查询字符串。
答案2
我认为 HAproxy 的当前版本不支持这种重定向。真的需要 HAproxy 吗?也许您也可以在本地主机上使用 Apache,让它监听端口 81,然后进行重定向,但通过 mod_rewrite 保留查询字符串。当然,这会增加开销。
答案3
你能解释一下它有什么用吗?它可能很容易在 haproxy 中实现,甚至可以在几天内完成 dev16 之前完成,但在添加功能之前,我需要确信它们的用途。