我正在尝试重定向这些:
到这些:
但是努力学习文档和最好的方法。
*更新*
这就是我现在所做的工作。如果我传入:
然后重定向到:
...以及配置部分:
acl blog_page path_beg -i /blog
use_backend blog_site if blog_page
backend blog_site
reqrep ^([^\ :]*)\ \/?(.*)\/blog\/?(.*) \1\ /\2\3
redirect prefix http://blog.example.co.uk code 301
答案 0 :(得分:1)
前端部分中的以下行将完成此重写和重定向。
为清晰起见,显示为多行,这必须全部显示在您的配置的一行
http-request redirect
code 301
location https://blog.example.com%[capture.req.uri,regsub(^/blog,)]
if { hdr(host) -i www.example.com } { path_beg /blog }
如果主机标头与www.example.com匹配且路径以博客开头,则重定向到以文字字符串https://blog.example.com
开头的位置,然后连接通过获取请求URI(路径+查询字符串)和使用正则表达式替换从头开始删除/blog
。
验证:
$ curl -v 'http://www.example.com/blog/posts?which=this&that=1'
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to www.example.com (127.0.0.1) port 80 (#0)
> GET /blog/posts?which=this&that=1 HTTP/1.1
> User-Agent: curl/7.35.0
> Host: www.example.com
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Content-length: 0
< Location: https://blog.example.com/posts?which=this&that=1
重定向位置似乎是正确的。
如果您想单独重定向http和https,则需要两行,每行测试一个附加条件,以确定原始请求是通过http还是https。
使用regsub()
转换器需要HAProxy 1.6 +。