> Apache2.2 中文手册 > URL重写:简介

URL重写简介

本篇文档是mod_rewrite参考文档的补充,阐述了使用mod_rewrite之前必须了解的基本概念。其它文档则作了更加深入的探讨。不过这篇文档对于初学者是一篇很好的入门读物。

URL重写:简介

简介

Apache的mod_rewrite是提供了强大URL操作的杀手级模块,可以实现几乎所有你梦想的URL操作,其代价是你必须接受其复杂性,因为mod_rewrite对于初学者的主要障碍就是不容易理解和运用,即使是Apache专家有时也会发掘出mod_rewrite的新用途。换句话说:你或者是打退堂鼓永不再用,或者是喜欢它并一生受用。目前存在这样一种倾向:许多初学者只是把URL重写规则当着是会变戏法的魔咒,而并未在使用中真正理解这些规则的含义。

本篇文档试图给出充分的背景知识,以便于初学者随后的理解,而不是盲目的复制和粘贴。

URL重写:简介

正则表达式

mod_rewrite使用的是Perl兼容的正则表达式语法。本文不打算详细讲解正则表达式语法,你可以到PCRE man page, Perl regular expression man page, Mastering Regular Expressions, by Jeffrey Friedl获得这些内容。

RewriteRule指令的说明部分有一个简单的正则表达式语法简介,可以去参考一下。
另外需要说明的是可以在表达式的最前面加上一个感叹号('!')表示不匹配,不过这种用法并不符合正则表达式语法。

正则表达式的反向引用能力

这是很重要的一点:一旦在Pattern或者CondPattern中使用了圆括号,就会建立内部的反向引用,可以使用$N%N来调用(见下述),并且在SubstitutionTestString中都有效。图-2说明了反向引用被转换和展开的位置。

URL重写:简介
图-2: The back-reference flow through a rule.

URL重写:简介

RewriteRule basics

(此部分文档尚未完成) Basic anatomy of a RewriteRule, with exhaustively annotated simple examples.

URL重写:简介

Rewrite Flags

(此部分文档尚未完成) Discussion of the flags to RewriteRule, and when and why one might use them.

URL重写:简介

Rewrite conditions

(此部分文档尚未完成) Discussion of RewriteCond, looping, and other related concepts.

URL重写:简介

Rewrite maps

(此部分文档尚未完成) Discussion of RewriteMap, including simple, but heavily annotated, examples.

URL重写:简介

.htaccess files

(此部分文档尚未完成) Discussion of the differences between rewrite rules in httpd.conf and in .htaccess files.

URL重写:简介

环境变量

此模块会跟踪两个额外的(非标准)CGI/SSI环境变量:SCRIPT_URLSCRIPT_URI。他们包含了当前资源的逻辑网络视图,而标准CGI/SSI变量SCRIPT_NAMESCRIPT_FILENAME包含的是物理系统视图。

注意:这些变量保持的是其最初被请求时的URI/URL,即在任何重写操作之前的URI/URL。其重要性在于他们是重写操作重写URL到物理路径名的原始依据。

示例

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/
上一篇:
下一篇: