Proxy request: On server1 - # cat .htaccess RewriteEngine On RewriteRule (AAA.*) http://server2.com/phpinfo.php?q=$1 [L,P] # telnet server1.com 80 GET /AAA%20AAA HTTP/1.1 HOST:server1.com answer from server2: QUERY_STRING q=AAA REQUEST_URI /phpinfo.php?q=AAA SCRIPT_NAME /phpinfo.php Usual requst: # cat .htaccess RewriteEngine On RewriteRule (AAA.*) /phpinfo.php?q=$1 [L] Similar request but the answer is: QUERY_STRING q=AAA AAA REQUEST_URI /AAA%20AAA SCRIPT_NAME /phpinfo.php
Fixed in r757427 - thanks for the report.
Backported to 2.2.x as r773351.
By the way this patch didn't solve that problem I described first. You should add the following: --- modules/mappers/mod_rewrite.c.orig 2012-09-18 22:30:31.170185072 +0400 +++ modules/mappers/mod_rewrite.c 2012-09-17 23:48:43.428422154 +0400 @@ -769,6 +769,7 @@ else if (r->args[len-1] == '&') { r->args[len-1] = '\0'; } + r->args = ap_escape_uri(r->pool, r->args); rewritelog((r, 3, NULL, "split uri=%s -> uri=%s, args=%s", olduri, r->filename, r->args ? r->args : "<none>")); }