重定向到基于Haproxy路径的新域名
您好,感谢您提前帮忙。重定向到基于Haproxy路径的新域名
我在我的旧网站上有一个博客,我正试图使用haproxy将所有帖子重定向到他们在我的新网站上的新位置。例如,我想https://www.oldsite.com/john-blog/blogpost1被301重定向到https://www.newsite.com/jill-blog/blogpost1。
https://www.oldsite.com/john-blog =>https://www.newsite.com/jill-blog
frontend https
option http-server-close
reqadd X-Forwarded-Proto:\ https
acl is_ob path_sub john-blog
redirect location https://www.newsite.com/jill-blog code 301 if is_ob
我已经弄清楚如何转发流量/john-blog
但一直无法弄清楚如何做重写,这样/john-blog/blogpost1
旧网站301重定向到/jill-blog/blogpost1
在新网站上。
这是我能想出:
frontend https
option http-server-close
reqadd X-Forwarded-Proto:\ https
acl old_site hdr(host) -i www.oldsite.com
acl john_blog path_beg /john-blog
acl jill_blog path_beg /jill-blog
reqrep ^([^\ ]*\ /)john-blog(.*) \1jill-blog\2 if old_site john_blog
redirect prefix https://www.newsite.com code 301 if old_site jill_blog
此配置的唯一缺点是,它也将重定向https://www.oldsite.com/jill-blog
=>https://www.newsite.com/jill-blog
。如果这是一个问题,我可以尝试找出其他的东西。
是如何工作
我将遵循和实例来https://www.oldsite.com/john-blog/blogpost1
的请求。
在此示例中,acl old_site
将为true,acl john_blog
将为true,并且acl jill_blog
将为false。
的reqrep
线替换john-blog
与jill-blog
仅当old_site
和john_blog
的ACL都为真,这对于本实施例中是这样。在这一行之后,示例url将是https://www.oldsite.com/jill-blog/blogpost1
。
此时,acl john_blog
现在不再成立,但acl jill_blog
正如uri现在以/jill-blog
开头。 acl old_site
仍然如此。
redirect
行在prefix mode其中重定向位置由附加的原始uri提供的字符串确定。在这个例子中,提供的字符串是https://www.newsite.com
,并且附加的URI是/jill-blog/blogpost1
,导致https://www.newsite.com/jill-blog/blogpost1
的重标识url。
希望有所帮助。
谢谢@JamesStewy。 – Jay
@JamesStewy,我有一个类似的http重定向请求,但无法使其工作 - https://*.com/questions/48583664/how-to-redirect-url-using-haproxy – newbie