You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ji...@apache.org on 2014/02/21 20:47:27 UTC
svn commit: r1570684 - in /httpd/httpd/branches/2.4.x: ./ CHANGES STATUS
docs/manual/ docs/manual/mod/ docs/manual/mod/mod_rewrite.xml
modules/mappers/mod_rewrite.c
Author: jim
Date: Fri Feb 21 19:47:26 2014
New Revision: 1570684
URL: http://svn.apache.org/r1570684
Log:
Merge r1570288 from trunk:
*) mod_rewrite: Add RewriteOptions InheritDown, InheritDownBefore,
and IgnoreInherit to allow RewriteRules to be pushed from parent scopes
to child scopes without explicitly configuring each child scope.
PR56153.
Submitted By: Edward Lu
Committed By: covener
Submitted by: covener
Reviewed/backported by: jim
Modified:
httpd/httpd/branches/2.4.x/ (props changed)
httpd/httpd/branches/2.4.x/CHANGES
httpd/httpd/branches/2.4.x/STATUS
httpd/httpd/branches/2.4.x/docs/manual/ (props changed)
httpd/httpd/branches/2.4.x/docs/manual/mod/ (props changed)
httpd/httpd/branches/2.4.x/docs/manual/mod/mod_rewrite.xml
httpd/httpd/branches/2.4.x/modules/mappers/mod_rewrite.c
Propchange: httpd/httpd/branches/2.4.x/
------------------------------------------------------------------------------
Merged /httpd/httpd/trunk:r1570288
Modified: httpd/httpd/branches/2.4.x/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/CHANGES?rev=1570684&r1=1570683&r2=1570684&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.4.x/CHANGES [utf-8] Fri Feb 21 19:47:26 2014
@@ -2,6 +2,11 @@
Changes with Apache 2.4.8
+ *) mod_rewrite: Add RewriteOptions InheritDown, InheritDownBefore,
+ and IgnoreInherit to allow RewriteRules to be pushed from parent scopes
+ to child scopes without explicitly configuring each child scope.
+ PR56153. [Edward Lu <Chaosed0 gmail com>]
+
*) prefork: Fix long delays when doing a graceful restart.
PR 54852 [Jim Jagielski, Arkadiusz Miskiewicz <arekm maven pl>]
Modified: httpd/httpd/branches/2.4.x/STATUS
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/STATUS?rev=1570684&r1=1570683&r2=1570684&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/STATUS (original)
+++ httpd/httpd/branches/2.4.x/STATUS Fri Feb 21 19:47:26 2014
@@ -98,13 +98,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- * mod_rewrite: Add RewriteOptions InheritDown, InheritDownBefore,
- and IgnoreInherit to allow RewriteRules to be pushed from parent scopes
- to child scopes without explicitly configuring each child scope.
- PR56153.
- trunk patch: http://svn.apache.org/r1570288
- 2.4.x patch: trunk works
- +1 covener, humbedooh, jim
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
Propchange: httpd/httpd/branches/2.4.x/docs/manual/
------------------------------------------------------------------------------
Merged /httpd/httpd/trunk/docs/manual:r1570288
Propchange: httpd/httpd/branches/2.4.x/docs/manual/mod/
------------------------------------------------------------------------------
Merged /httpd/httpd/trunk/docs/manual/mod:r1570288
Modified: httpd/httpd/branches/2.4.x/docs/manual/mod/mod_rewrite.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/docs/manual/mod/mod_rewrite.xml?rev=1570684&r1=1570683&r2=1570684&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/docs/manual/mod/mod_rewrite.xml (original)
+++ httpd/httpd/branches/2.4.x/docs/manual/mod/mod_rewrite.xml Fri Feb 21 19:47:26 2014
@@ -173,6 +173,34 @@ later</compatibility>
Available in Apache HTTP Server 2.3.10 and later.</p>
</dd>
+ <dt><code>InheritDown</code></dt>
+ <dd>
+
+ <p>If this option is enabled, all child configurations will inherit
+ the configuration of the current configuration. It is equivalent to
+ specifying <code>RewriteOptions Inherit</code> in all child
+ configurations. See the <code>Inherit</code> option for more details
+ on how the parent-child relationships are handled. Available in Apache
+ HTTP Server 2.4.8 and later.</p>
+ </dd>
+
+ <dt><code>InheritDownBefore</code></dt>
+ <dd>
+
+ <p>Like <code>InheritDown</code> above, but the rules from the current
+ scope are applied <strong>before</strong> rules specified in any child's
+ scope. Available in Apache HTTP Server 2.4.8 and later.</p>
+ </dd>
+
+ <dt><code>IgnoreInherit</code></dt>
+ <dd>
+
+ <p>This option forces the current and child configurations to ignore
+ all rules that would be inherited from a parent specifying
+ <code>InheritDown</code> or <code>InheritDownBefore</code>. Available
+ in Apache HTTP Server 2.4.8 and later.</p>
+ </dd>
+
<dt><code>AllowNoSlash</code></dt>
<dd>
<p>By default, <module>mod_rewrite</module> will ignore URLs that map to a
Modified: httpd/httpd/branches/2.4.x/modules/mappers/mod_rewrite.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/mappers/mod_rewrite.c?rev=1570684&r1=1570683&r2=1570684&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/modules/mappers/mod_rewrite.c (original)
+++ httpd/httpd/branches/2.4.x/modules/mappers/mod_rewrite.c Fri Feb 21 19:47:26 2014
@@ -192,6 +192,9 @@ static const char* really_last_key = "re
#define OPTION_NOSLASH 1<<3
#define OPTION_ANYURI 1<<4
#define OPTION_MERGEBASE 1<<5
+#define OPTION_INHERIT_DOWN 1<<6
+#define OPTION_INHERIT_DOWN_BEFORE 1<<7
+#define OPTION_IGNORE_INHERIT 1<<8
#ifndef RAND_MAX
#define RAND_MAX 32767
@@ -2765,7 +2768,9 @@ static void *config_server_merge(apr_poo
a->server = overrides->server;
- if (a->options & OPTION_INHERIT) {
+ if (a->options & OPTION_INHERIT ||
+ (base->options & OPTION_INHERIT_DOWN &&
+ !(a->options & OPTION_IGNORE_INHERIT))) {
/*
* local directives override
* and anything else is inherited
@@ -2777,7 +2782,9 @@ static void *config_server_merge(apr_poo
a->rewriterules = apr_array_append(p, overrides->rewriterules,
base->rewriterules);
}
- else if (a->options & OPTION_INHERIT_BEFORE) {
+ else if (a->options & OPTION_INHERIT_BEFORE ||
+ (base->options & OPTION_INHERIT_DOWN_BEFORE &&
+ !(a->options & OPTION_IGNORE_INHERIT))) {
/*
* local directives override
* and anything else is inherited (preserving order)
@@ -2854,13 +2861,17 @@ static void *config_perdir_merge(apr_poo
a->directory = overrides->directory;
- if (a->options & OPTION_INHERIT) {
+ if (a->options & OPTION_INHERIT ||
+ (base->options & OPTION_INHERIT_DOWN &&
+ !(a->options & OPTION_IGNORE_INHERIT))) {
a->rewriteconds = apr_array_append(p, overrides->rewriteconds,
base->rewriteconds);
a->rewriterules = apr_array_append(p, overrides->rewriterules,
base->rewriterules);
}
- else if (a->options & OPTION_INHERIT_BEFORE) {
+ else if (a->options & OPTION_INHERIT_BEFORE ||
+ (base->options & OPTION_INHERIT_DOWN_BEFORE &&
+ !(a->options & OPTION_IGNORE_INHERIT))) {
a->rewriteconds = apr_array_append(p, base->rewriteconds,
overrides->rewriteconds);
a->rewriterules = apr_array_append(p, base->rewriterules,
@@ -2912,6 +2923,15 @@ static const char *cmd_rewriteoptions(cm
else if (!strcasecmp(w, "inheritbefore")) {
options |= OPTION_INHERIT_BEFORE;
}
+ else if (!strcasecmp(w, "inheritdown")) {
+ options |= OPTION_INHERIT_DOWN;
+ }
+ else if(!strcasecmp(w, "inheritdownbefore")) {
+ options |= OPTION_INHERIT_DOWN_BEFORE;
+ }
+ else if (!strcasecmp(w, "ignoreinherit")) {
+ options |= OPTION_IGNORE_INHERIT;
+ }
else if (!strcasecmp(w, "allownoslash")) {
options |= OPTION_NOSLASH;
}