mirror of
https://github.com/apache/httpd.git
synced 2025-11-08 04:22:21 +03:00
URLs. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@158972 13f79535-47bb-0310-9956-ffa450edef68
168 lines
5.8 KiB
XML
168 lines
5.8 KiB
XML
<?xml version='1.0' encoding='UTF-8' ?>
|
|
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
|
|
<!-- $LastChangedRevision$ -->
|
|
|
|
<!--
|
|
Copyright 2002-2005 The Apache Software Foundation or its licensors, as
|
|
applicable.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<manualpage metafile="rewrite_intro.xml.meta">
|
|
<parentdocument href="./index.html"/>
|
|
|
|
<title>Apache mod_rewrite Introduction</title>
|
|
|
|
<summary>
|
|
<p>This document supplements the <module>mod_rewrite</module>
|
|
<a href="../mod/mod_rewrite.html">reference documentation</a>. It
|
|
describes the basic concepts necessary for use of
|
|
<module>mod_rewrite</module>. Other documents go into greater detail,
|
|
but this doc should help the beginner get their feet wet.
|
|
</p>
|
|
</summary>
|
|
|
|
<seealso><a href="../mod/mod_rewrite.html">Module
|
|
documentation</a></seealso>
|
|
<seealso><a href="rewrite_tech.html">Technical details</a></seealso>
|
|
<seealso><a href="rewrite_guide.html">Practical solutions to common
|
|
problems</a></seealso>
|
|
<seealso><a href="rewrite_guide_advanced.html">Practical solutions to
|
|
advanced problems</a></seealso>
|
|
|
|
<section id="introduction"><title>Introduction</title>
|
|
<p>The Apache module <module>mod_rewrite</module> is a very powerful and
|
|
sophisticated module which provides a way to do URL manipulations. With
|
|
it, you can do nearly all types of URL rewriting that you may need. It
|
|
is, however, somewhat complex, and may be intimidating to the beginner.
|
|
There is also a tendency to treat rewrite rules as magic incantation,
|
|
using them without actually understanding what they do.</p>
|
|
|
|
<p>This document attempts to give sufficient background so that what
|
|
follows is understood, rather than just copied blindly.
|
|
</p>
|
|
</section>
|
|
|
|
<section id="regex"><title>Regular Expressions</title>
|
|
|
|
<p>mod_rewrite uses the <a href="http://pcre.org/">Perl Compatible
|
|
Regular Expression</a> vocabulary. In this document, we do not attempt
|
|
to provide a detailed reference to regular expressions. For that, we
|
|
recommend the <a href="http://pcre.org/pcre.txt">PCRE man pages</a>, the
|
|
<a href="http://www.perldoc.com/perl5.8.0/pod/perlre.html">Perl regular
|
|
expression man page</a>, and <a
|
|
href="http://www.oreilly.com/catalog/regex2/index.html">Mastering
|
|
Regular Expressions, by Jeffrey Friedl</a>.</p>
|
|
|
|
<p>In this document, we attempt to provide enough of a regex vocabulary
|
|
to get you started, without being overwhelming, in the hope that
|
|
<directive module="mod_rewrite">RewriteRule</directive>s will be scientific
|
|
formulae, rather than magical incantations.</p>
|
|
|
|
<section id="regexvocab"><title>Regex vocabulary</title>
|
|
|
|
<p>The following are the minimal building blocks you will need, in order
|
|
to write regular expressions and <directive
|
|
module="mod_rewrite">RewriteRule</directive>s.</p>
|
|
|
|
<table>
|
|
<tr>
|
|
<th>Character</th>
|
|
<th>Meaning</th>
|
|
</tr>
|
|
|
|
<tr><td><code>.</code></td><td>Matches any character</td></tr>
|
|
|
|
</table>
|
|
|
|
</section>
|
|
|
|
<section id="InternalBackRefs"><title>Regex Back-Reference Availability</title>
|
|
|
|
<p>One important thing here has to be remembered: Whenever you
|
|
use parentheses in <em>Pattern</em> or in one of the
|
|
<em>CondPattern</em>, back-references are internally created
|
|
which can be used with the strings <code>$N</code> and
|
|
<code>%N</code> (see below). These are available for creating
|
|
the strings <em>Substitution</em> and <em>TestString</em>.
|
|
Figure 2 shows to which locations the back-references are
|
|
transferred for expansion.</p>
|
|
|
|
<p class="figure">
|
|
<img src="../images/mod_rewrite_fig2.gif" width="381"
|
|
height="179" alt="[Needs graphics capability to display]" /><br />
|
|
<dfn>Figure 2:</dfn> The back-reference flow through a rule.
|
|
</p>
|
|
|
|
</section>
|
|
</section>
|
|
|
|
<section id="rewriterule"><title>RewriteRule basics</title>
|
|
<p>
|
|
Basic anatomy of a RewriteRule, with exhaustively annotated simple
|
|
examples.
|
|
</p>
|
|
</section>
|
|
|
|
<section id="flags"><title>Rewrite Flags</title>
|
|
<p>Discussion of the flags to RewriteRule, and when and why one might
|
|
use them.</p>
|
|
</section>
|
|
|
|
<section id="rewritecond"><title>Rewrite conditions</title>
|
|
<p>Discussion of RewriteCond, looping, and other related concepts.
|
|
</p>
|
|
</section>
|
|
|
|
<section id="rewritemap"><title>Rewrite maps</title>
|
|
<p>Discussion of RewriteMap, including simple, but heavily annotated,
|
|
examples.</p>
|
|
</section>
|
|
|
|
<section id="htaccess"><title>.htaccess files</title>
|
|
<p>Discussion of the differences between rewrite rules in httpd.conf and
|
|
in .htaccess files.</p>
|
|
</section>
|
|
|
|
<section id="EnvVar"><title>Environment Variables</title>
|
|
|
|
<p>This module keeps track of two additional (non-standard)
|
|
CGI/SSI environment variables named <code>SCRIPT_URL</code>
|
|
and <code>SCRIPT_URI</code>. These contain the
|
|
<em>logical</em> Web-view to the current resource, while the
|
|
standard CGI/SSI variables <code>SCRIPT_NAME</code> and
|
|
<code>SCRIPT_FILENAME</code> contain the <em>physical</em>
|
|
System-view. </p>
|
|
|
|
<p>Notice: These variables hold the URI/URL <em>as they were
|
|
initially requested</em>, <em>i.e.</em>, <em>before</em> any
|
|
rewriting. This is important because the rewriting process is
|
|
primarily used to rewrite logical URLs to physical
|
|
pathnames.</p>
|
|
|
|
<example><title>Example</title>
|
|
<pre>
|
|
SCRIPT_NAME=/sw/lib/w3s/tree/global/u/rse/.www/index.html
|
|
SCRIPT_FILENAME=/u/rse/.www/index.html
|
|
SCRIPT_URL=/u/rse/
|
|
SCRIPT_URI=http://en1.engelschall.com/u/rse/
|
|
</pre>
|
|
</example>
|
|
|
|
</section>
|
|
|
|
</manualpage>
|
|
|