リクエスト文字列でProxy

http://www.example.com/hoge/?fuga 

で始まるURLを別のバックエンドへProxyせよというリクエスト。
ただし、/hoge/の?で始まらないURL、つまり引数がついてないURLは別のところへProxyせよとのこと。
当初はProxyPassMatchで出きるかなとこう書いてみた。

ProxyPassMatch  ^/hoge/\?fuga(.*)  http://backend_a/hoge/?$1
ProxyPass           /hoge/                  http://backend_b/hoge/

ところがこれがうまく行かない。どうやら?以下はクエリ文字列であって、URIではないので、mod_proxyでは引っ掛けられない模様。

困ったときのmod_rewriteってことで調べてみると、ちゃんと%{QUERY_STRING}で引っ掛けることができるみたい。
以下のようなrewriteルールを作成。

    RewriteEngine     On
    RewriteCond       %{REQUEST_URI}    ^/hoge/
    RewriteCond       %{QUERY_STRING}  ^(fuga.*)$
    RewriteRule         ^/hoge/      http://backend_a/hoge/?%1 [P]
   
  ProxyPass         /hoge/         http://backend_b/hoge/

REQUEST_URIQUERY_STRINGで引っ掛けてバックエンドへプロクシ。?以下がURIではないということを見つけるまでに少々時間がかかりました。