ProxyPassMatch正则表达式不匹配

时间:2017-03-28 08:34:31

标签: regex apache mod-proxy proxypass

使用Apache 2.2.15,我只是在“year”参数等于2015时设置一个匹配以下请求的ProxyPassMatch规则:

/my-servlet/DownloadPdf?param1=40978659700000&year=2015&param3=testrv%2540rv.com

我知道以下配置符合我的要求并且有效:

ProxyPassMatch /my-servlet/(.*)$ balancer://mycluster

但我想要这样的东西,它不起作用:

ProxyPassMatch /my-servlet/(.*year=2015.*)$ balancer://mycluster

我还尝试了与请求匹配的其他正则表达式,不成功:

ProxyPassMatch /my-servlet/.*year=2015.* balancer://mycluster
ProxyPassMatch /my-servlet/.*year=2015.*$ balancer://mycluster

我不明白我的配置有什么问题?

1 个答案:

答案 0 :(得分:0)

摘自mod_proxy docs

The path is the name of a local virtual path; url is a partial URL for the remote server and cannot include a query string.

没有测试,但可能的解决方法:

RewriteEnginge On
RewriteCond %{QUERY_STRING} year=2015
RewriteRule (.*) balancer://mycluster [P]

让我们知道,如果它完成了这项工作,甚至更多,如果没有;)