我们弃用了一些在 http://localhost/test 下可用的软件,现在在 http://localhost/app/testing 下可用。我们正在使用 HAProxy 1.4
因此,我想通过 haproxy,用 /test
替换所有包含 /app/testing/
的网址。我首先尝试使用 redirect prefix
以保留查询字符串,但 /test
并未从 url 中删除并且具有类似 /app/testing/test/?id=x
的内容。
frontend all
bind 0.0.0.0:80
timeout client 86400000
acl is_test path_beg /test
redirect prefix /app/testing code 301 if is_test
然后使用了一个
reqrep
,它似乎重定向到新软件,但 url 中的 /test
字符串从未被替换。frontend all
bind 0.0.0.0:80
timeout client 86400000
reqrep ^([^\ :]*)\ /test[/]?(.*) \1\ /app/testing/\2
最佳答案
由于 1.4 版无法重写 url 并且我们不想更新 HAProxy,因此我们继续使用 reqrep
并保持旧链接不变
reqrep ^([^\ :]*)\ /test[/]?(.*) \1\ /app/testing/\2
关于HAProxy reqrep 不替换 url 中的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40972885/