From 9c698e96a0ab0a6db402dca7e146f33328ee9c18 Mon Sep 17 00:00:00 2001 From: Rich Bowen Date: Wed, 9 Nov 2011 00:34:39 +0000 Subject: [PATCH] Further clarification to address bug #30021 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1199568 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/rewrite/tech.xml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/manual/rewrite/tech.xml b/docs/manual/rewrite/tech.xml index bd2dc078b9..d30f8748a5 100644 --- a/docs/manual/rewrite/tech.xml +++ b/docs/manual/rewrite/tech.xml @@ -81,7 +81,9 @@ and URL matching.

RewriteBase directive to see how you can further manipulate how this is handled.) Then, a new internal subrequest is issued with the new URL. This restarts - processing of the API phases.

+ processing of the request phases. (Be careful to avoid rules that + can cause looping. See RewriteLooping + for further discussion of this problem.

Because of this further manipulation of the URL in per-directory context, you'll need to take care to craft your rewrite rules @@ -149,16 +151,17 @@ and URL matching.

alt="Flow of RewriteRule and RewriteCond matching" />
Figure 1:The control flow through the rewriting ruleset

-

As you can see, first the URL is matched against the - Pattern of each rule. When it fails mod_rewrite - immediately stops processing this rule and continues with the +

First the URL is matched against the + Pattern of each rule. If it fails, mod_rewrite + immediately stops processing this rule, and continues with the next rule. If the Pattern matches, mod_rewrite looks - for corresponding rule conditions. If none are present, it - just substitutes the URL with a new value which is - constructed from the string Substitution and goes on + for corresponding rule conditions (RewriteCond directives, + appearing immediately above the RewriteRule in the configuration). + If none are present, it substitutes the URL with a new value, which is + constructed from the string Substitution, and goes on with its rule-looping. But if conditions exist, it starts an inner loop for processing them in the order that they are - listed. For conditions the logic is different: we don't match + listed. For conditions, the logic is different: we don't match a pattern against the current URL. Instead we first create a string TestString by expanding variables, back-references, map lookups, etc. and then we try -- 2.40.0