Bug 46428 - Spaces in URI doesn't encode in proxy-requests
Summary: Spaces in URI doesn't encode in proxy-requests
Status: REOPENED
Alias: None
Product: Apache httpd-2
Classification: Unclassified
Component: mod_rewrite (show other bugs)
Version: 2.2.9
Hardware: PC Linux
: P2 normal (vote)
Target Milestone: ---
Assignee: Apache HTTPD Bugs Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-12-21 10:32 UTC by Alexey Vlasov
Modified: 2012-09-18 18:31 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Vlasov 2008-12-21 10:32:47 UTC
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
Comment 1 Joe Orton 2009-03-23 09:03:53 UTC
Fixed in r757427 - thanks for the report.
Comment 2 Ruediger Pluem 2009-05-10 08:13:57 UTC
Backported to 2.2.x as r773351.
Comment 3 Alexey Vlasov 2012-09-18 18:31:20 UTC
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>"));
     }