That change gets httpd-2.0 back to 1.3.27's behavior, which itself has another somewhat related bug. The second attachment "mod_rewrite+mod_dir-proxyfix.diff" is basically the same patch I posted to bug 14648, forward ported to 2.0.43. This patch allows mod_rewrite to do proxy-substitutions in subrequests. This fixes a bug which causes mod_rewrite-based proxypass directives to work differently from things setup directly in mod_proxy.
--
Mike Cramer
http://www.webkist.com/
diff --recursive -buB httpd-2.0.43/modules/mappers/mod_dir.c httpd-2.0.43-mrc/modules/mappers/mod_dir.c --- httpd-2.0.43/modules/mappers/mod_dir.c Thu May 16 01:20:46 2002 +++ httpd-2.0.43-mrc/modules/mappers/mod_dir.c Mon Dec 2 14:19:26 2002 @@ -202,7 +202,15 @@ /* XXX: (filetype == APR_REG) - we can't use a non-file index??? */ if (rr->status == HTTP_OK && rr->finfo.filetype == APR_REG) { - ap_internal_fast_redirect(rr, r); + char *new_uri = ap_escape_uri(r->pool, rr->uri); + + if (rr->args != NULL) + new_uri = apr_pstrcat(r->pool, new_uri, "?", rr->args, NULL); + else if (r->args != NULL) + new_uri = apr_pstrcat(r->pool, new_uri, "?", r->args, NULL); + + ap_destroy_sub_req(rr); + ap_internal_redirect(new_uri, r); return OK; }
diff --recursive -buB httpd-2.0.43/modules/mappers/mod_dir.c httpd-2.0.43-1.3fix/modules/mappers/mod_dir.c --- httpd-2.0.43/modules/mappers/mod_dir.c Thu May 16 01:20:46 2002 +++ httpd-2.0.43-1.3fix/modules/mappers/mod_dir.c Mon Dec 2 14:48:49 2002 @@ -198,7 +198,7 @@ name_ptr = apr_pstrcat(r->pool, name_ptr, "?", r->args, NULL); } - rr = ap_sub_req_lookup_uri(name_ptr, r, NULL); + rr = ap_sub_req_lookup_file(name_ptr, r, NULL); /* XXX: (filetype == APR_REG) - we can't use a non-file index??? */ if (rr->status == HTTP_OK && rr->finfo.filetype == APR_REG) { diff --recursive -buB httpd-2.0.43/modules/mappers/mod_rewrite.c httpd-2.0.43-1.3fix/modules/mappers/mod_rewrite.c --- httpd-2.0.43/modules/mappers/mod_rewrite.c Fri Aug 30 00:47:57 2002 +++ httpd-2.0.43-1.3fix/modules/mappers/mod_rewrite.c Mon Dec 2 14:48:34 2002 @@ -1707,7 +1707,6 @@ */ if (r->main != NULL && (p->flags & RULEFLAG_IGNOREONSUBREQ || - p->flags & RULEFLAG_PROXY || p->flags & RULEFLAG_FORCEREDIRECT )) { continue; }