From a7a182afab132e0aadfe1a61d7ff1c15f8db03f2 Mon Sep 17 00:00:00 2001 From: "Ralf S. Engelschall" Date: Thu, 31 Jul 1997 21:23:11 +0000 Subject: [PATCH] Bring mod_rewrite documentation up-to-date with recent source upgrade. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@78837 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mod_rewrite.html | 132 +++++++++++++++++++++++-------- 1 file changed, 97 insertions(+), 35 deletions(-) diff --git a/docs/manual/mod/mod_rewrite.html b/docs/manual/mod/mod_rewrite.html index 495eefa799..ce8731c259 100644 --- a/docs/manual/mod/mod_rewrite.html +++ b/docs/manual/mod/mod_rewrite.html @@ -17,7 +17,7 @@ > -

Module mod_rewrite (Version 3.0)

+

Module mod_rewrite

This module is contained in the mod_rewrite.c file, with Apache 1.2 and later. It provides a rule-based rewriting engine to rewrite requested @@ -41,20 +41,15 @@ tables, DBM hash files or external processes) for advanced URL substitution.

-It operates on the full URLs (including the PATH_INFO part) both in -per-server context (httpd.conf) and per-dir context (.htaccess) and even -can generate QUERY_STRING parts on result. The rewritten result can lead to internal sub-processing, external request redirection or to internal proxy throughput. +It operates on the full URLs (including the PATH_INFO part) both in per-server +context (httpd.conf) and per-dir context (.htaccess) and even can generate +QUERY_STRING parts on result. The rewritten result can lead to internal +sub-processing, external request redirection or to internal proxy throughput.

-The latest version can be found on
- -http://www.engelschall.com/sw/mod_rewrite/ - -

-Copyright © 1996,1997 The Apache Group, All rights reserved.
-Copyright © 1996,1997 Ralf S. Engelschall, All rights reserved. +This module was originally written in April 1996 and +gifted exclusively to the The Apache Group in July 1997 by

-Written for The Apache Group by

Ralf S. Engelschall
rse@engelschall.com
@@ -126,7 +121,6 @@ strings can be one of the following: conditions and rules of the main server gets inherited. In per-directory context this means that conditions and rules of the parent directory's .htaccess configuration gets inherited. -

@@ -146,7 +140,7 @@ with a slash ('/') then it is assumed to be relative to the config.

- +
To disable the logging of rewriting actions it is not recommended to set Filename @@ -160,7 +154,7 @@ To disable logging either remove or comment out the

- +
SECURITY: See the Apache Security @@ -197,7 +191,7 @@ To disable the logging of rewriting actions simply set Level to 0. This disables all rewrite action logs.

- +
Notice: Using a high value for Level will slow down your Apache server dramatically! Use the rewriting logfile only for debugging or at least @@ -266,7 +260,7 @@ of the following formats: string as in the following example:

- +
 #
 #   map.real-to-user -- maps realnames to usernames
@@ -278,7 +272,7 @@ Dr.Fred.Klabuster     fred  # Mr. DAU
 

- +
@@ -312,7 +306,7 @@ RewriteMap real-to-host txt:/path/to/file/map.real-to-user for the given key). A trivial program which will implement a 1:1 map (i.e. key == value) could be:

-

 RewriteMap real-to-host txt:/path/to/file/map.real-to-user
 
+
 #!/usr/bin/perl
 $| = 1;
@@ -345,7 +339,7 @@ context it is of course possible to use this map in per-directory
 context.
 
 

- +
For plain text and DBM format files the looked-up keys are cached in-core until the mtime of the mapfile changes or the server does a @@ -383,7 +377,7 @@ will be usually be wrong! There you have to use the RewriteBase directive to specify the correct URL-prefix.

- +
So, if your webserver's URLs are not directly related to physical file paths, you have to use RewriteBase in every @@ -399,7 +393,7 @@ directives. Assume the following per-directory config file:

- +
 #
 #  /abc/def/.htaccess -- per-dir config file for directory /abc/def
@@ -423,7 +417,7 @@ In the above example, a request to /xyz/oldstuff.html gets correctly
 rewritten to the physical file /abc/def/newstuff.html.
 
 

- +
For the Apache hackers:
@@ -487,7 +481,7 @@ where NAME_OF_VARIABLE can be a string of the following list:

- +
@@ -561,7 +556,7 @@ IS_SUBREQ

-

HTTP headers:

@@ -543,6 +537,7 @@ TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
+TIME

+
These variables all correspond to the similar named HTTP MIME-headers, C variables of the Apache server or struct tm fields of the Unix @@ -622,6 +617,22 @@ There are some special variants of CondPatterns. Instead of real regular expression strings you can also use one of the following:

    +
  • '<CondPattern' (is lexicographically lower)
    +Treats the CondPattern as a plain string and compares it +lexicographically to TestString and results in a true expression if +TestString is lexicographically lower then CondPattern. +

    +

  • '>CondPattern' (is lexicographically greater)
    +Treats the CondPattern as a plain string and compares it +lexicographically to TestString and results in a true expression if +TestString is lexicographically greater then CondPattern. +

    +

  • '=CondPattern' (is lexicographically equal)
    +Treats the CondPattern as a plain string and compares it +lexicographically to TestString and results in a true expression if +TestString is lexicographically equal to CondPattern, i.e the +two strings are exactly equal (character by character). +

  • '-d' (is directory)
    Treats the TestString as a pathname and tests if it exists and is a directory. @@ -682,7 +693,6 @@ RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule ...some special stuff for any of these hosts... Without this flag you had to write down the cond/rule three times. -

@@ -708,7 +718,6 @@ Frames, etc. If you use the Lynx browser (which is Terminal-based), then you get the min homepage, which contains no images, no tables, etc. If you use any other browser you get the standard homepage. -


@@ -738,7 +747,7 @@ and made alterations to it. Some hints about the syntax of regular expressions:

- +
@@ -769,7 +778,7 @@ for special cases where it is better to match the negative pattern or as a
 last default rule.
 
 

- +
Notice! When using the NOT character to negate a pattern you cannot have grouped wildcard parts in the pattern. This is impossible because when @@ -813,7 +822,14 @@ conjunction with the C (chain) flag to be able to have more than one pattern to be applied before a substitution occurs.

- +One more note: You can even create URLs in the substitution string containing +a query string part. Just use a question mark inside the substitution string +to indicate that the following stuff should be re-injected into the +QUERY_STRING. When you want to erase an existing query string, end the +substitution string with just the question mark. + +

+

Notice: There is a special feature. When you prefix a substitution field with http://thishost[:thisport] then @@ -935,6 +951,13 @@ comma-separated list of the following flags: chance is high that you will run into problems (or even overhead) on sub-requests. In these cases, use this flag.

+

  • 'qsappend|QSA' (query string + append)
    + This flag forces the rewriting engine to append a query + string part in the substitution string to the existing one instead of + replacing it. Use this when you want to add more data to the query string + via a rewrite rule. +

  • 'passthrough|PT' (pass through to next handler)
    This flag forces the rewriting engine to set the uri field of the internal request_rec structure to the value @@ -961,7 +984,7 @@ comma-separated list of the following flags: typical example is the use of mod_alias and mod_rewrite..

    - +
    For the Apache hackers:
    @@ -994,7 +1017,7 @@ comma-separated list of the following flags:

    - +
    Remember: Never forget that Pattern gets applied to a complete URL in per-server configuration files. But in per-directory configuration @@ -1011,7 +1034,7 @@ external redirect or proxy throughput (if flag P is used!) is forced!

    - +
    Notice! To enable the rewriting engine for per-directory configuration files you need to set ``RewriteEngine On'' in these files and @@ -1030,7 +1053,7 @@ Here are all possible substitution combinations and their meanings: for request ``GET /somepath/pathinfo'':

    - +
    @@ -1077,7 +1100,7 @@ for request ``GET /somepath/pathinfo'':
    request ``GET /somepath/localpath/pathinfo'':

    - +
    @@ -1150,6 +1173,45 @@ RewriteRule  ^/([^/]+)/~([^/]+)/(.*)$   /u/${real-to-user:$2|nobody}/$3.$1
     
     
     
    +
    +
    + + +
    + +

    Additional Features

    +
    +
    + + +

    Environment Variables

    +
    + +This module keeps track of two additional (non-standard) CGI/SSI environment +variables named SCRIPT_URL and SCRIPT_URI. These contain +the logical Web-view to the current resource, while the standard CGI/SSI +variables SCRIPT_NAME and SCRIPT_FILENAME contain the +physical System-view. + +

    +Notice: These variables hold the URI/URL as they were initially +requested, i.e. in a state before any rewriting. This is +important because the rewriting process is primarily used to rewrite logical +URLs to physical pathnames. + +

    +Example: + +

    +
    +SCRIPT_NAME=/v/sw/free/lib/apache/global/u/rse/.www/index.html
    +SCRIPT_FILENAME=/u/rse/.www/index.html
    +SCRIPT_URL=/u/rse/
    +SCRIPT_URI=http://en2.en.sdm.de/u/rse/
    +
    +
    + + -- 2.40.0