Apache mod_rewrite Introduction - Apache 2.2 中文版参考手册

Apache HTTP Server 2.2

<-
   致谢 | 译者声明 | 本篇译者:<虚位以待> | 本篇译稿完成时间:?年?月?日 | 获取最新版本

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.

top

简介

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.

top

Regular Expressions

mod_rewrite uses the Perl Compatible Regular Expression vocabulary. In this document, we do not attempt to provide a detailed reference to regular expressions. For that, we recommend the PCRE man pages, the Perl regular expression man page, and Mastering Regular Expressions, by Jeffrey Friedl.

In this document, we attempt to provide enough of a regex vocabulary to get you started, without being overwhelming, in the hope that RewriteRules will be scientific formulae, rather than magical incantations.

Regex vocabulary

The following are the minimal building blocks you will need, in order to write regular expressions and RewriteRules.

CharacterMeaning
.Matches any character

Regex Back-Reference Availability

One important thing here has to be remembered: Whenever you use parentheses in Pattern or in one of the CondPattern, back-references are internally created which can be used with the strings $N%N (see below). These are available for creating the strings SubstitutionTestString. Figure 2 shows to which locations the back-references are transferred for expansion.

[Needs graphics capability to display] Figure 2: The back-reference flow through a rule.

top

RewriteRule basics

Basic anatomy of a RewriteRule, with exhaustively annotated simple examples.

top

Rewrite Flags

Discussion of the flags to RewriteRule, and when and why one might use them.

top

Rewrite conditions

Discussion of RewriteCond, looping, and other related concepts.

top

Rewrite maps

Discussion of RewriteMap, including simple, but heavily annotated, examples.

top

.htaccess files

Discussion of the differences between rewrite rules in httpd.conf and in .htaccess files.

top

Environment Variables

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

注意: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/