haproxy绝对重定向整个域

时间:2017-11-10 03:46:51

标签: haproxy

我一直在谷歌上搜索几个小时没有运气的东西,这些东西必须简单。

我正在使用haproxy 1.7并尝试301重定向从一个域到另一个“登录页面”的所有流量,并取得部分成功。我可以获得一个基本的重定向工作,但是如果有人使用带书签的链接,他们将获得404,因为新域名中不存在该URL。

domain1.com/foo或domain1.com/bar/baz/无论是什么都需要重定向到domain2.com/landing我无法在任何示例中找到有关如何执行此操作的acl。我知道它必须在reidrect之前成为某种重写规则,但我无法让它工作。

以下是我尝试过的一些设置:

#        reqrep ^([^\ ]*)\ /(.*)  \1\ /\2 if domain1_host
#        redirect location https://domain2.com/landing  code 301  prefix /landing drop-query if domain1_host
#        http-request replace-header X-REWRITE ^/.*?$ /\1 if domain1_host
#        reqrep ^([^\ ]*\ /)(.*) \1landing\2 if domain1_host
#        reqrep ^([^\ ]*\ /)[/]?(.*)     \1\2 if domain1_host
#        reqrep ^([^\ ]*)\ /(.*) \1\ /\2 if domain1_host
#        redirect prefix https://domain2.com/landing code 301  if domain1_host
redirect scheme https://domain2.com/landing code 301  if domain1_host

如果有人对我错过的内容有一些建议,我会非常感谢某些方向。

1 个答案:

答案 0 :(得分:1)

与此战斗,终于找到了答案。我是对的,很简单。不需要reqrep或重写直接规则之外的重写。简单地将位置重定向到目标位置。这绝对是重写。

redirect location https://domain2.com/landing code 301 if domain1_host    

只需要。

我希望网上有一个更好的例子,当重定向位置有用时,但我怀疑大多数人会比这样的重定向更频繁地需要acl或重定向前缀。我希望未来的其他人会发现这篇文章很有用。