You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rb...@apache.org on 2016/02/02 10:50:10 UTC
svn commit: r1728060 -
/httpd/httpd/branches/2.4.x/docs/manual/mod/mod_rewrite.xml
Author: rbowen
Date: Tue Feb 2 09:50:10 2016
New Revision: 1728060
URL: http://svn.apache.org/viewvc?rev=1728060&view=rev
Log:
mod_rewrite doc enhancements from trunk.
Modified:
httpd/httpd/branches/2.4.x/docs/manual/mod/mod_rewrite.xml
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=1728060&r1=1728059&r2=1728060&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 Tue Feb 2 09:50:10 2016
@@ -132,8 +132,6 @@ URLs on the fly</description>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
-<compatibility><code>MaxRedirects</code> is no longer available in version 2.1 and
-later</compatibility>
<usage>
<p>The <directive>RewriteOptions</directive> directive sets some
@@ -264,15 +262,13 @@ later</compatibility>
<dt><code>IgnoreContextInfo</code></dt>
<dd>
- <p>In versions 2.4.13 and later, when a relative substitution is made
+ <p>When a relative substitution is made
in directory (htaccess) context and <directive module="mod_rewrite"
>RewriteBase</directive> has not been set, this module uses some
extended URL and filesystem context information to change the
relative substitution back into a URL. Modules such as
<module>mod_userdir</module> and <module>mod_alias</module>
- supply this extended context info. This option disables the behavior
- introduced in 2.4.13 and should only be set if all of the conditions
- above are present and a substituion has an unexpected result. </p>
+ supply this extended context info. </p>
</dd>
</dl>
@@ -284,6 +280,7 @@ later</compatibility>
<name>RewriteMap</name>
<description>Defines a mapping function for key-lookup</description>
<syntax>RewriteMap <em>MapName</em> <em>MapType</em>:<em>MapSource</em>
+ <em>MapTypeOptions</em>
</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
@@ -321,16 +318,21 @@ later</compatibility>
<directive>RewriteMap</directive> as:</p>
<highlight language="config">
- RewriteMap "examplemap" "txt:/path/to/file/map.txt"
+RewriteMap examplemap "txt:/path/to/file/map.txt"
</highlight>
<p>You would then be able to use this map in a
<directive>RewriteRule</directive> as follows:</p>
<highlight language="config">
- RewriteRule "^/ex/(.*)" "${examplemap:$1}"
+RewriteRule "^/ex/(.*)" "${examplemap:$1}"
</highlight>
+ <p>The meaning of the <em>MapTypeOptions</em> argument depends on
+ particular <em>MapType</em>. See the
+ <a href="../rewrite/rewritemap.html">Using RewriteMap</a> for
+ more information.</p>
+
<p>The following combinations for <em>MapType</em> and
<em>MapSource</em> can be used:</p>
@@ -395,7 +397,7 @@ later</compatibility>
<directive>RewriteRule</directive>, suffixed by the relative
substitution is also valid as a URL path on the server
(this is rare).</li>
- <li> In Apache HTTP Server 2.4.13 and later, this directive may be
+ <li> In Apache HTTP Server 2.4.11 and later, this directive may be
omitted when the request is mapped via
<directive module="mod_alias">Alias</directive>
or <module>mod_userdir</module>.</li>
@@ -411,7 +413,7 @@ DocumentRoot "/var/www/example.com"
AliasMatch "^/myapp" "/opt/myapp-1.2.3"
<Directory "/opt/myapp-1.2.3">
RewriteEngine On
- RewriteBase /myapp/
+ RewriteBase "/myapp/"
RewriteRule "^index\.html$" "welcome.html"
</Directory>
</highlight>
@@ -757,136 +759,152 @@ AliasMatch "^/myapp" "/opt/myapp-1.2.3"
<li>
You can perform lexicographical string comparisons:
- <ul>
- <li>'<strong><CondPattern</strong>' (lexicographically
- precedes)<br />
+ <dl>
+ <dt><strong><CondPattern</strong></dt>
+ <dd>Lexicographically precedes<br />
Treats the <em>CondPattern</em> as a plain string and
compares it lexicographically to <em>TestString</em>. True if
<em>TestString</em> lexicographically precedes
- <em>CondPattern</em>.</li>
+ <em>CondPattern</em>.</dd>
- <li>'<strong>>CondPattern</strong>' (lexicographically
- follows)<br />
+ <dt><strong>>CondPattern</strong></dt>
+ <dd>Lexicographically follows<br />
Treats the <em>CondPattern</em> as a plain string and
compares it lexicographically to <em>TestString</em>. True if
<em>TestString</em> lexicographically follows
- <em>CondPattern</em>.</li>
+ <em>CondPattern</em>.</dd>
- <li>'<strong>=CondPattern</strong>' (lexicographically
- equal)<br />
+ <dt><strong>=CondPattern</strong></dt>
+ <dd>Lexicographically equal<br />
Treats the <em>CondPattern</em> as a plain string and
compares it lexicographically to <em>TestString</em>. True if
<em>TestString</em> is lexicographically equal to
<em>CondPattern</em> (the two strings are exactly
equal, character for character). If <em>CondPattern</em>
is <code>""</code> (two quotation marks) this
- compares <em>TestString</em> to the empty string.</li>
+ compares <em>TestString</em> to the empty string.</dd>
- <li>'<strong><=CondPattern</strong>' (lexicographically
- less than or equal to)<br />
+ <dt><strong><=CondPattern</strong></dt>
+ <dd>Lexicographically less than or equal to<br />
Treats the <em>CondPattern</em> as a plain string and
compares it lexicographically to <em>TestString</em>. True
if <em>TestString</em> lexicographically precedes
<em>CondPattern</em>, or is equal to <em>CondPattern</em>
- (the two strings are equal, character for character).</li>
+ (the two strings are equal, character for character).</dd>
- <li>'<strong>>=CondPattern</strong>' (lexicographically
- greater than or equal to)<br />
+ <dt><strong>>=CondPattern</strong></dt>
+ <dd>Lexicographically greater than or equal to<br />
Treats the <em>CondPattern</em> as a plain string and
compares it lexicographically to <em>TestString</em>. True
if <em>TestString</em> lexicographically follows
<em>CondPattern</em>, or is equal to <em>CondPattern</em>
- (the two strings are equal, character for character).</li>
- </ul></li>
+ (the two strings are equal, character for character).</dd>
+ </dl>
+ </li>
<li>
You can perform integer comparisons:
- <ul>
+ <dl>
- <li>'<strong>-eq</strong>' (is numerically
- <strong>eq</strong>ual to)<br />
+ <dt><strong>-eq</strong></dt>
+ <dd>Is numerically <strong>eq</strong>ual to<br />
The <em>TestString</em> is treated as an integer, and is
numerically compared to the <em>CondPattern</em>. True if
- the two are numerically equal.</li>
+ the two are numerically equal.</dd>
- <li>'<strong>-ge</strong>' (is numerically
- <strong>g</strong>reater than or <strong>e</strong>qual to)<br />
+ <dt><strong>-ge</strong></dt>
+ <dd>Is numerically <strong>g</strong>reater than or <strong>e</strong>qual to<br />
The <em>TestString</em> is treated as an integer, and is
numerically compared to the <em>CondPattern</em>. True if
the <em>TestString</em> is numerically greater than or equal
- to the <em>CondPattern</em>.</li>
+ to the <em>CondPattern</em>.</dd>
- <li>'<strong>-gt</strong>' (is numerically
- <strong>g</strong>reater <strong>t</strong>han)<br />
+ <dt><strong>-gt</strong></dt>
+ <dd>Is numerically <strong>g</strong>reater <strong>t</strong>han<br />
The <em>TestString</em> is treated as an integer, and is
numerically compared to the <em>CondPattern</em>. True if
the <em>TestString</em> is numerically greater than
- the <em>CondPattern</em>.</li>
+ the <em>CondPattern</em>.</dd>
- <li>'<strong>-le</strong>' (is numerically
- <strong>l</strong>ess than or <strong>e</strong>qual to)<br />
+ <dt><strong>-le</strong></dt>
+ <dd>Is numerically <strong>l</strong>ess than or <strong>e</strong>qual to<br />
The <em>TestString</em> is treated as an integer, and is
numerically compared to the <em>CondPattern</em>. True if
the <em>TestString</em> is numerically less than or equal
to the <em>CondPattern</em>. Avoid confusion with the
<strong>-l</strong> by using the <strong>-L</strong> or
- <strong>-h</strong> variant.</li>
+ <strong>-h</strong> variant.</dd>
- <li>'<strong>-lt</strong>' (is numerically
- <strong>l</strong>ess <strong>t</strong>han)<br />
+ <dt><strong>-lt</strong></dt>
+ <dd>Is numerically <strong>l</strong>ess <strong>t</strong>han<br />
The <em>TestString</em> is treated as an integer, and is
numerically compared to the <em>CondPattern</em>. True if
the <em>TestString</em> is numerically less than
the <em>CondPattern</em>. Avoid confusion with the
<strong>-l</strong> by using the <strong>-L</strong> or
- <strong>-h</strong> variant.</li>
+ <strong>-h</strong> variant.</dd>
- </ul>
+ </dl>
</li>
<li>You can perform various file attribute tests:
- <ul>
- <li>'<strong>-d</strong>' (is
- <strong>d</strong>irectory)<br />
+
+
+ <dl>
+
+ <dt><strong>-d</strong></dt>
+
+ <dd>Is <strong>d</strong>irectory.<br />
Treats the <em>TestString</em> as a pathname and tests
- whether or not it exists, and is a directory.</li>
+ whether or not it exists, and is a directory.
+ </dd>
+
+ <dt><strong>-f</strong></dt>
+
+ <dd>Is regular <strong>f</strong>ile.<br />
- <li>'<strong>-f</strong>' (is regular
- <strong>f</strong>ile)<br />
Treats the <em>TestString</em> as a pathname and tests
- whether or not it exists, and is a regular file.</li>
+ whether or not it exists, and is a regular file.
+ </dd>
+
+ <dt><strong>-F</strong></dt>
- <li>'<strong>-F</strong>' (is existing file, via
- subrequest)<br />
+ <dd>Is existing file, via subrequest.<br />
Checks whether or not <em>TestString</em> is a valid file,
accessible via all the server's currently-configured
access controls for that path. This uses an internal
subrequest to do the check, so use it with care -
- it can impact your server's performance!</li>
+ it can impact your server's performance!
+ </dd>
- <li>'<strong>-H</strong>' (is symbolic link, bash convention)<br />
- See <strong>-l</strong>.</li>
-
- <li>'<strong>-l</strong>' (is symbolic
- <strong>l</strong>ink)<br />
+ <dt><strong>-H</strong></dt>
+ <dd>Is symbolic link, bash convention.<br />
+ See <strong>-l</strong>.
+ </dd>
+
+ <dt><strong>-l</strong></dt>
+
+ <dd>Is symbolic <strong>l</strong>ink.<br />
Treats the <em>TestString</em> as a pathname and tests
whether or not it exists, and is a symbolic link. May also
use the bash convention of <strong>-L</strong> or
<strong>-h</strong> if there's a possibility of confusion
such as when using the <strong>-lt</strong> or
- <strong>-le</strong> tests.</li>
+ <strong>-le</strong> tests.
+ </dd>
- <li>'<strong>-L</strong>' (is symbolic link, bash convention)<br />
- See <strong>-l</strong>.</li>
+ <dt><strong>-L</strong></dt>
+ <dd>Is symbolic link, bash convention.<br />
+ See <strong>-l</strong>.</dd>
- <li>'<strong>-s</strong>' (is regular file, with
- <strong>s</strong>ize)<br />
+ <dt><strong>-s</strong></dt>
+ <dd>Is regular file, with <strong>s</strong>ize.<br />
Treats the <em>TestString</em> as a pathname and tests
whether or not it exists, and is a regular file with size greater
- than zero.</li>
+ than zero.</dd>
- <li><p>'<strong>-U</strong>' (is existing URL, via
- subrequest)<br />
+ <dt><strong>-U</strong></dt>
+ <dd><p>Is existing URL, via subrequest.<br />
Checks whether or not <em>TestString</em> is a valid URL,
accessible via all the server's currently-configured
access controls for that path. This uses an internal
@@ -896,16 +914,23 @@ AliasMatch "^/myapp" "/opt/myapp-1.2.3"
like access control, authentication, and authorization. This flag
<em>does not</em> return information about the status code the
configured handler (static file, CGI, proxy, etc.) would have
- returned.</p> </li>
+ returned.</p> </dd>
- <li>'<strong>-x</strong>' (has e<strong>x</strong>ecutable
- permissions)<br />
+ <dt><strong>-x</strong></dt>
+ <dd>Has e<strong>x</strong>ecutable permissions.<br />
Treats the <em>TestString</em> as a pathname and tests
whether or not it exists, and has executable permissions.
These permissions are determined according to
- the underlying OS.</li>
+ the underlying OS.</dd>
+
+ </dl>
+
+ For example:
- </ul>
+ <highlight language="config">
+ RewriteCond /var/www/%{REQUEST_URI} !-f
+ RewriteRule ^(.+) /other/archive/$1 [R]
+ </highlight>
</li>
@@ -921,8 +946,8 @@ AliasMatch "^/myapp" "/opt/myapp-1.2.3"
</p>
<highlight language="config">
- RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
- RewriteRule "^/images" "-" [F]
+RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
+RewriteRule "^/images" "-" [F]
</highlight>
</li>
@@ -1218,11 +1243,19 @@ cannot use <code>$N</code> in the substi
</tr>
<tr>
<td>B</td>
- <td>Escape non-alphanumeric characters <em>before</em> applying
- the transformation. <em><a
+ <td>Escape non-alphanumeric characters in backreferences <em>before</em>
+ applying the transformation. <em><a
href="../rewrite/flags.html#flag_b">details ...</a></em></td>
</tr>
<tr>
+ <td>backrefnoplus|BNP</td>
+ <td>If backreferences are being escaped, spaces should be escaped to
+ %20 instead of +. Useful when the backreference will be used in the
+ path component rather than the query string.<em><a
+ href="../rewrite/flags.html#flag_bnp">details ...</a></em></td>
+ </tr>
+
+ <tr>
<td>chain|C</td>
<td>Rule is chained to the following rule. If the rule fails,
the rule(s) chained to it will be skipped. <em><a
@@ -1439,7 +1472,7 @@ directive.</p>
<p><strong>Inside per-directory configuration for
<code>/somepath</code><br />
(<code>/physical/path/to/somepath/.htaccess</code>, with
- <code>RewriteBase /somepath</code>)<br />
+ <code>RewriteBase "/somepath"</code>)<br />
for request ``<code>GET
/somepath/localpath/pathinfo</code>'':</strong><br />
</p>