Return-Path: Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: (qmail 23608 invoked from network); 5 Jan 2011 22:40:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 5 Jan 2011 22:40:09 -0000 Received: (qmail 27275 invoked by uid 500); 5 Jan 2011 22:40:09 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 27226 invoked by uid 500); 5 Jan 2011 22:40:09 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 27219 invoked by uid 99); 5 Jan 2011 22:40:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jan 2011 22:40:09 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jan 2011 22:40:08 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 51E2523888EC; Wed, 5 Jan 2011 22:39:48 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1055671 - /httpd/httpd/trunk/docs/manual/mod/mod_rewrite.xml Date: Wed, 05 Jan 2011 22:39:48 -0000 To: cvs@httpd.apache.org From: covener@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110105223948.51E2523888EC@eris.apache.org> Author: covener Date: Wed Jan 5 22:39:47 2011 New Revision: 1055671 URL: http://svn.apache.org/viewvc?rev=1055671&view=rev Log: PR#44838: be more up front with how the per-dir RewriteRule comparison is the filesystem path minus the Directory the rules were listed in. Modified: httpd/httpd/trunk/docs/manual/mod/mod_rewrite.xml Modified: httpd/httpd/trunk/docs/manual/mod/mod_rewrite.xml URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/mod_rewrite.xml?rev=1055671&r1=1055670&r2=1055671&view=diff ============================================================================== --- httpd/httpd/trunk/docs/manual/mod/mod_rewrite.xml (original) +++ httpd/httpd/trunk/docs/manual/mod/mod_rewrite.xml Wed Jan 5 22:39:47 2011 @@ -879,24 +879,59 @@ RewriteRule ^/$ /homepa RewriteRule.

What is matched? -

The Pattern will initially be matched against the part of the - URL after the hostname and port, and before the query string.

- -

When the RewriteRule appears in per-directory (htaccess) context, the - Pattern is matched against what remains of the URL after removing - the prefix that lead Apache httpd to the current rules (see the - RewriteBase). The removed prefix - always ends with a slash, meaning the matching occurs against a string which - never has a leading slash. A Pattern with ^/ never - matches in per-directory context.

- +

In VirtualHost context, + The Pattern will initially be matched against the part of the + URL after the hostname and port, and before the query string (e.g. "/app1/index.html").

+ +

In Directory and htaccess context, + the Pattern will initially be matched against the + filesystem path, after removing the prefix that lead the server + to the current RewriteRule (e.g. "app1/index.html" + or "index.html" depending on where the directives are defined).

+

If you wish to match against the hostname, port, or query string, use a RewriteCond with the %{HTTP_HOST}, %{SERVER_PORT}, or - %{QUERY_STRING} variables respectively. If you wish to - match against the full URL-path in a per-directory (htaccess) RewriteRule, - use the %{REQUEST_URI} variable.

+ %{QUERY_STRING} variables respectively.

+ +
+ +Per-directory Rewrites +
    +
  • The rewrite engine may be used in .htaccess files in Directory sections, with some additional +complexity.
  • + +
  • To enable the rewrite engine in this context, you need to set +"RewriteEngine On" and +"Options FollowSymLinks" must be enabled. If your +administrator has disabled override of FollowSymLinks for +a user's directory, then you cannot use the rewrite engine. This +restriction is required for security reasons.
  • +
  • When using the rewrite engine in .htaccess files the +per-directory prefix (which always is the same for a specific +directory) is automatically removed for the RewriteRule pattern matching +and automatically added after any relative (not starting with a +slash or protocol name) substitution encounters the end of a rule set. +See the RewriteBase +directive for more information regarding what prefix will be added back to +relative substutions.
  • + +
  • If you wish to match against the full URL-path in a per-directory +(htaccess) RewriteRule, use the %{REQUEST_URI} variable in +a RewriteCond.
  • + +
  • The removed prefix always ends with a slash, meaning the matching occurs against a string which +never has a leading slash. Therefore, A Pattern with ^/ never +matches in per-directory context.
  • + +
  • Although rewrite rules are syntactically permitted in Location and Files sections, this +should never be necessary and is unsupported.
  • +

For some hints on regular @@ -1171,44 +1206,6 @@ flag is used on the .htaccess files. To enable the -rewrite engine for these files you need to set -"RewriteEngine On" and -"Options FollowSymLinks" must be enabled. If your -administrator has disabled override of FollowSymLinks for -a user's directory, then you cannot use the rewrite engine. This -restriction is required for security reasons.

- -

When using the rewrite engine in .htaccess files the -per-directory prefix (which always is the same for a specific -directory) is automatically removed for the pattern matching -and automatically added after the substitution has been -done. This feature is essential for many sorts of rewriting; without -this, you would always have to match the parent directory, which is -not always possible. There is one exception: If a substitution string -starts with http://, then the directory prefix will -not be added, and an external redirect (or proxy -throughput, if using flag P) is forced. See the -RewriteBase directive for -more information.

- -

The rewrite engine may also be used in Directory sections with the same -prefix-matching rules as would be applied to .htaccess -files. It is usually simpler, however, to avoid the prefix substitution -complication by putting the rewrite rules in the main server or -virtual host context, rather than in a Directory section.

- -

Although rewrite rules are syntactically permitted in Location and Files sections, this -should never be necessary and is unsupported.

- -

Here are all possible substitution combinations and their meanings: