Apache HTTP Server Version 2.0
Apache mod_rewrite Introduction
This document supplements the mod_rewrite
reference documentation. It
describes the basic concepts necessary for use of
mod_rewrite
. Other documents go into greater detail,
but this doc should help the beginner get their feet wet.
Introduction
The Apache module mod_rewrite
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.
This document attempts to give sufficient background so that what follows is understood, rather than just copied blindly.
Regular Expressions
Basic regex building blocks
RewriteRule basics
Basic anatomy of a RewriteRule, with exhaustively annotated simple examples.
Rewrite Flags
Discussion of the flags to RewriteRule, and when and why one might use them.
Rewrite conditions
Discussion of RewriteCond, looping, and other related concepts.
Rewrite maps
Discussion of RewriteMap, including simple, but heavily annotated, examples.
.htaccess files
Discussion of the differences between rewrite rules in httpd.conf and in .htaccess files.
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., before any rewriting. This is important because the rewriting process is primarily used to rewrite logical URLs to physical pathnames.
Example
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/