]> granicus.if.org Git - apache/commitdiff
mod_rewrite: fix a problem in the proxy support of mod_rewrite. The broken
authorPaul J. Reder <rederpj@apache.org>
Mon, 14 Jul 2003 16:40:13 +0000 (16:40 +0000)
committerPaul J. Reder <rederpj@apache.org>
Mon, 14 Jul 2003 16:40:13 +0000 (16:40 +0000)
code was inserting multiple "proxy:" fields in the rewritten URIs.
[Submitted by:  Eider Oliveira <eider@bol.com.br>]
[Updated and reviewed by: Paul J. Reder]

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100600 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/mappers/mod_rewrite.c

diff --git a/CHANGES b/CHANGES
index 5ab527e42c1f19ee96a8ff46b65179935b75aa6a..cfc5e624e967eef8efd9be6f58077739f33b0fcb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,12 @@ Changes with Apache 2.1.0-dev
 
   [Remove entries to the current 2.0 section below, when backported]
 
+  *) mod_rewrite: fix a problem in the proxy support of mod_rewrite.
+     The broken code was inserting multiple "proxy:" fields in the
+     rewritten URIs.
+     [Submitted by:  Eider Oliveira <eider@bol.com.br>]
+     [Updated and reviewed by: Paul J. Reder]
+
   *) mod_actions: Propagate the handler name to the action script via
      the REDIRECT_HANDLER environment variable.  [AndrĂ© Malo]
 
index 7880255a0ec9de092ee3ea28ee6f1af2f94f5a98..d714bc4ceca1e6cd590f9d138772111afc1e0f0c 100644 (file)
@@ -1104,6 +1104,7 @@ static void init_child(apr_pool_t *p, server_rec *s)
 static int hook_uri2file(request_rec *r)
 {
     rewrite_server_conf *conf;
+    const char *saved_rulestatus;
     const char *var;
     const char *thisserver;
     char *thisport;
@@ -1182,6 +1183,7 @@ static int hook_uri2file(request_rec *r)
                       thisurl, NULL);
     apr_table_setn(r->subprocess_env, ENVVAR_SCRIPT_URI, var);
 
+    if (!(saved_rulestatus = apr_table_get(r->notes,"already_rewritten"))) {
     /* if filename was not initially set,
      * we start with the requested URI
      */
@@ -1190,11 +1192,25 @@ static int hook_uri2file(request_rec *r)
         rewritelog(r, 2, "init rewrite engine with requested uri %s",
                    r->filename);
     }
+    else {
+        rewritelog(r, 2, "init rewrite engine with passed filename %s."
+                   " Original uri = %s", r->filename, r->uri);
+    }
 
     /*
      *  now apply the rules ...
      */
     rulestatus = apply_rewrite_list(r, conf->rewriterules, NULL);
+    apr_table_set(r->notes,"already_rewritten",
+                  apr_psprintf(r->pool,"%d",rulestatus));
+    }
+    else {
+        rewritelog(r, 2,
+                   "uri already rewritten. Status %s, Uri %s, r->filename %s",
+                   saved_rulestatus, r->uri, r->filename);
+        rulestatus = atoi(saved_rulestatus);
+    }
+
     if (rulestatus) {
         unsigned skip;
 
@@ -2818,6 +2834,13 @@ static unsigned is_absolute_uri(char *uri)
             return 7;
         }
         break;
+
+    case 'p':
+    case 'P':
+        if (!strncasecmp(uri, "roxy:", 5)) {       /* proxy:   */
+            return 6;
+        }
+        break;
     }
 
     return 0;