我一直在谷歌上搜索几个小时没有运气的东西,这些东西必须简单。
我正在使用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
如果有人对我错过的内容有一些建议,我会非常感谢某些方向。
答案 0 :(得分:1)
与此战斗,终于找到了答案。我是对的,很简单。不需要reqrep或重写直接规则之外的重写。简单地将位置重定向到目标位置。这绝对是重写。
redirect location https://domain2.com/landing code 301 if domain1_host
只需要。
我希望网上有一个更好的例子,当重定向位置有用时,但我怀疑大多数人会比这样的重定向更频繁地需要acl或重定向前缀。我希望未来的其他人会发现这篇文章很有用。