快速业务通道

301rewrite杂谈

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-29

#########################################################
#301rewrite杂谈
#date:2011-08-08
#作者:Jeacen
#QQ:198888885 MAIL:jeacen@lamphelp.org
#blog: http://jeacen.blog.51cto.com
#psite: http://www.lamphelp.org
#pblog:http://www.jeacen.com
##########################################################

#########################################################

########################################################

#######################################################

RewriteRule指令
说明: 为重写引擎定义规则
语法: RewriteRule Pattern Substitution

RewriteRule指令是重写引擎的根本.此指令可以多次使用. 每个指令定义一个简单的重写规则.这些规则的定义顺序尤为重要, ,在运行时刻,规则是按这个顺序逐一生效的.

Pattern是一个作用于当前URL的兼容perl的正则表达式. 这里的``当前''''是指该规则生效时的URL的值. 它可能与被请求的URL不同,其他规则可能在此之前已经发生匹配并对它做了改动.

正则表达式的一些用法:

Text:
. Any single character
[chars] Character class: One of chars
[^chars] Character class: None of chars
text1|text2 Alternative: text1 or text2

Quantifiers:
? 0 or 1 of the preceding text
* 0 or N of the preceding text (N > 0)
1 or N of the preceding text (N > 1)

Grouping:
(text) Grouping of text
(either to set the borders of an alternative or
for making backreferences where the Nth group can
be used on the RHS of a RewriteRule with $N)

Anchors:

Empire CMS,phome.net

^ Start of line anchor
$ End of line anchor

Escaping:
\char escape that particular char
(for instance to specify the chars ".[]()" etc.)

更多有关正则表达式的资料请参见perl正则表达式手册.


另外,在mod_rewrite中,还可以使用否字符(''!'')的pattern前缀,以实现pattern的反转. 比如:``如果当前URL不与pattern相匹配''''. 它用于使用否pattern较容易描述的需要排除的某些情况,或者作为一条规则.

注意
使用否字符以反转pattern时,pattern中不能使用分组的通配成分. pattern不匹配而使分组的内容是空的,它是不可能实现的. 因此,如果使用了否pattern,那么后继的字符串中就不能使用$N!
重写规则中的Substitution是, 当原始URL与Pattern相匹配时,用以替代(或替换)的字符串. 除了纯文本,还可以使用

$N 反向引用RewriteRule的pattern
%N 反向引用匹配的RewriteCond pattern
规则条件测试字符串中(%{VARNAME})的服务器变量
映射函数调用(${mapname:key|default})
反向引用的$N (N=0..9) 是指用Pattern所匹配的第N组的内容去替换URL. 服务器变量与RewriteCond指令的TestString相同. 映射函数由RewriteMap指令所决定,其说明也参见该指令. 这三种类型变量按上面列表中的顺序被扩展.

如上所述,所有的重写规则都是(按配置文件中的定义顺序)作用于Substitution的. URL被Substitution完全地替换,并继续处理直到所有规则处理完毕, 除非用L标记显式地终结 - 见下文.

''-''是一个特殊的替换串,意思是不要替换! 似乎很愚蠢吧? 不, 它可以用于仅仅匹配某些URL而无须替换的情况下,即, 在发生替换前,允许以C (chain)标记连接的多个pattern同时起作用.

Empire CMS,phome.net

还有,你甚至可以在替换字符

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号