HAProxy 重写和重定向
HA Proxy rewrite and redirect
正在尝试重写和重定向。我一直在尝试这个,它在某种程度上有效,但不是我想要的 100%
acl 旧 url_beg /site/ab
http-request 重定向位置 /new/%[query] if old
例如url可以是
https://host/site/ab/xx
https://host/site/ab/yyyy
https://host/site/ab/zzzzzz
https://host/site/ab/zzzzzz/asdajshdjasd
我想抓住粗体标记的部分并简单地将用户重定向到 https//host/new/boldmarkedpart
粗体标记部分之后的任何字符串都可以丢弃。例如最后一个例子中的“/asdajshdjasd”。
知道如何做到这一点吗?谢谢!!
如果我没理解错的话,你想拆分 url
的 path
部分并得到它的第 4 部分。
在字符串 foo1/foo2/foo3/foo4/foo5
中,您只需要 foo4
。
这应该适合你:
acl old path_beg /site/ab
http-request redirect location /new/%[path,field(4,/)] if old
您想要路径中的第 3 个目录,而这里您取第 4 个词,这可能会造成混淆,但那是因为当您将 /foo2/foo3/foo4/foo5
拆分为 /
时,第一个词是空的。
field
转换器记录在此处:https://cbonte.github.io/haproxy-dconv/2.2/configuration.html#7.3.1-field
其他说明:
%[query]
会 return url
的 query
部分,这是 ?
字符之后的所有内容,而您根本没有查询部分在你的例子中。
url
在我的测试中有 schema://hostname:port/path
,所以测试 acl old url_beg /site/ab
从未匹配,path
是
正在尝试重写和重定向。我一直在尝试这个,它在某种程度上有效,但不是我想要的 100%
acl 旧 url_beg /site/ab http-request 重定向位置 /new/%[query] if old
例如url可以是
https://host/site/ab/xx
https://host/site/ab/yyyy
https://host/site/ab/zzzzzz
https://host/site/ab/zzzzzz/asdajshdjasd
我想抓住粗体标记的部分并简单地将用户重定向到 https//host/new/boldmarkedpart
粗体标记部分之后的任何字符串都可以丢弃。例如最后一个例子中的“/asdajshdjasd”。
知道如何做到这一点吗?谢谢!!
如果我没理解错的话,你想拆分 url
的 path
部分并得到它的第 4 部分。
在字符串 foo1/foo2/foo3/foo4/foo5
中,您只需要 foo4
。
这应该适合你:
acl old path_beg /site/ab
http-request redirect location /new/%[path,field(4,/)] if old
您想要路径中的第 3 个目录,而这里您取第 4 个词,这可能会造成混淆,但那是因为当您将 /foo2/foo3/foo4/foo5
拆分为 /
时,第一个词是空的。
field
转换器记录在此处:https://cbonte.github.io/haproxy-dconv/2.2/configuration.html#7.3.1-field
其他说明:
%[query]
会 returnurl
的query
部分,这是?
字符之后的所有内容,而您根本没有查询部分在你的例子中。url
在我的测试中有schema://hostname:port/path
,所以测试acl old url_beg /site/ab
从未匹配,path
是