On 10/29/2010 04:43 PM, [email protected] wrote: > Author: covener > Date: Fri Oct 29 14:43:49 2010 > New Revision: 1028778 > > URL: http://svn.apache.org/viewvc?rev=1028778&view=rev > Log: > Add an END flag to RewriteRule that acts like L=LAST but also prevents > further rounds of rewrite processing due to per-directory substitutions. > > > Modified: > httpd/httpd/trunk/CHANGES > httpd/httpd/trunk/docs/manual/mod/mod_rewrite.xml > httpd/httpd/trunk/docs/manual/rewrite/flags.xml > httpd/httpd/trunk/modules/mappers/mod_rewrite.c >
> Modified: httpd/httpd/trunk/modules/mappers/mod_rewrite.c > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/mappers/mod_rewrite.c?rev=1028778&r1=1028777&r2=1028778&view=diff > ============================================================================== > --- httpd/httpd/trunk/modules/mappers/mod_rewrite.c (original) > +++ httpd/httpd/trunk/modules/mappers/mod_rewrite.c Fri Oct 29 14:43:49 2010 > @@ -4129,6 +4134,11 @@ static int apply_rewrite_list(request_re > break; > } > > + if (p->flags & RULEFLAG_END) { > + rewritelog((r, 8, perdir, "Rule has END flag, no further > rewriting for this request")); > + apr_pool_userdata_set("1", really_last_key, > apr_pool_cleanup_null, r->pool); Why not using r->notes? > + break; > + } > /* > * Stop processing also on proxy pass-through and > * last-rule and new-round flags. > @@ -4319,6 +4330,13 @@ static int hook_uri2file(request_rec *r) > return DECLINED; > } > > + /* END flag was used as a RewriteRule flag on this request */ > + apr_pool_userdata_get(&skipdata, really_last_key, r->pool); > + if (skipdata != NULL) { > + rewritelog((r, 8, NULL, "Declining, no further rewriting due to END > flag")); > + return DECLINED; > + } > + Why is this needed here? How can we run through this hook twice for the same request? > /* > * add the SCRIPT_URL variable to the env. this is a bit complicated > * due to the fact that apache uses subrequests and internal redirects Regards Rüdiger
