PC6下载站

分类分类

ISAPI_Rewrite3使用教程

关注+2011-01-07作者:清晨

4 页 Apache下mod_rewrite的兼容性

3.2和Apache下mod_rewrite的兼容性

这个版本的ISAPI_Rewrite是为了最大程度上保持与Apache的mod_rewrite的兼容性。这个目标已经很大程度上实现了,尽管有一些功能无法执行,因为它们和Apeach以及UNIX结构高度绑定,而且它们在IIS上执行是不敏感的。举例说明:第H条:“强制内容处理”标记不能执行,因为在IIS中内容处理的范围依赖于扩展名。或者第[NS]条:“没有子请求”标记是无意义的,因为在IIS中是没有子请求的。
这里有一个完整的ISAPI_Rewrite和mod_rewrite兼容性图表。标记为绿色的功能或指令是充分支持的,黄色的功能是部分支持或计划在下一版本中支持,标示为红色的功能是不支持的。
· 兼容Perl的正则表达式 (plus extended syntax)
· 服务器级httpd.conf配置
· 虚拟网站.htaccess配置文件
· 目录.htaccess配置文件
·
·
·
·
·
·
·
· AccessFileName
· RewriteEngine
· RewriteRule
o $N 规则后向引用
o %N RewriteCond 后向引用
o ${mapname:key|default}
o %{VARNAME} 服务器变量
o '!' 取非
o [C] 与下一个规则联锁
o [CO=name:val:domain:lifetime:path] 设置cookie
o [E=var:val] 设置环境变量
o [F] 强制禁止应答
o [G] 强制继续应答
o [H=content-handler] 明确的内容处理 (不适用)
o [L] 上一个规则标记
o [N] 再次应用规则
o [NC] 大小写不敏感
o [NE] 不转义输出
o [NS]非内部子请求
o [P]代理通过
o [PT] 传递通过下一个处理程序 (一直开启)
o [QSA] 追加查询字符串
o [R =code] 重定向
o [S=num] 跳到下面第n条规则
o [T=MIME-type] 强制明确应答 MIME 类型
· RewriteCond
o [NC] 大小写不敏感
o [OR] 逻辑并集
o %{HTTP:header}
o '!'
o '<CondPattern' 大于比较符
o '>CondPattern' 小于比较符
o '=CondPattern' 等于比较符
o '-d' 目录存在
o '-f' 文件存在
o '-s' 非零文件
o '-l' 符号链接
o '-x' 有可执行权限的文件
o '-F' 通过子请求文件存在
o '-U' 通过子请求URL存在
· RewriteBase
· RewriteMap
o txt: 文本映射
o rnd: 随机映射
o int: 内部函数 toupper, tolower, escape, unescape
o prg: 外部程序
o dbm: 散列文件
· RewriteLog
· RewriteLogLevel
· RewriteOptions
· RewriteLock
· AllowOverride 3.3使用环境以及处理顺序
以下是这个程序文档中要被用到的使用环境的详解:
server config
这个标志表示该指令可以用在全局httpd.conf配置文件中,但是不能用在任何一个分区(例如或者)内部。它不允许放在.htaccess文件中。
vitrual host
这意味着指令可以出现在容器内。
directory
这个标志表示指令在容器内可用,而且它们的正则表达式是等价的。
.htaccess
使用环境标为它的指令可以出现在每个目录的.htaccess文件中。记住当RewriteRule指令用在.htaccess配置文件中时,它将自动从路径中剥去本地目录前缀,只对剩下的部分应用规则。你可以使用RewriteBase指令显式地给这些规则指定一个基本路径。
应用次序
当同一分区内的多条指令同时适用时,理解每个分区应用的次序是很重要的,因为它会对最终效果起作用。应用次序如下所述:
1.(正则表达式除外):多个分区可以应用于单个请求,如果多个(非正则表达式)分区匹配了包含文档的这个目录(或者它的上级目录中的一个),则按照从短到长的匹配次序应用指令。
2..htaccess文件按父目录到子目录的顺序应用。
3.同时被执行。
4.也同时被执行。
先应用虚拟主机外面定义的相应分区和指令,再应用分区中的分区和指令。同一时间只有一个分区可以应用给请求。较晚的分区优先于较早的那些。
3.4正则表达式
正则表达式语法指南是Rege++文档的一部分,由John Maddock博士友情提供,Copyright ?1998-2004,包含在《Boost license》这本书里。完整的语法说明可以在《Boost.Regex documentation》中找到。
字面值
所的字符都是字面值,除了“.”“*”“?”“+”“(”“)”“{”“}”“[”“]”“^”和“$”。当这些字符由“\”前导时也是字面值。一个字面值是个匹配它自己的字符。
通配符
点字符“.”匹配空字符和换行符以外的任何单个字符。
重复
重复是被重复任意次数的表达式。一个表达式跟着“*”可以被重复任意次数,包括重复零次。一个表达式跟着“+”可以被重复任意次数,但是至少重复一次。一个表达式跟着“?”可以被只重复零次或者一次。当需要明确指定重复的最低次数和最高次数时,可以用限定运算符“{}”。这样“a{2}”是字母“a”重复两次。“a{2,4}”表示字母“a”重复2到4次。“a{2,}”表示字母“a”重复2到无限多次。注意“{}”里面必须没有空格。而且它没有对上限值和下限值限定范围。所有的重复表达式参考尽可能短的前子表达式:一个单独字符,一个字符集,或者一个用“()”括起来的子表达式,举几个例子:
? "ba*"匹配所有的"b","ba","baaa" 等等。
? "ba+"匹配"ba"或"baaa",但是不匹配"b"。
? "ba?"匹配"b"或者"ba"。
? "ba{2,4}"匹配"baa","baaa","baaaa"。
懒惰型重复
在重复之后附加一个“?”就是懒惰型的重复了。一个懒惰型的重复是指匹配尽可能短的字符串。
例如:匹配HTML标记对可以使用下面这样的正则表达式:
"<\s*tagname[^>]*>(.*?)<\s*/tagname\s*>"
在这种情况下$1将包含标签对之间的文本,而且是最短的匹配字符串。
插入成份
插入成分有两个用处——把项目编组到子表达式中,并且对生成的匹配标号。例如,表达式"(ab)*"将匹配所有的这类字符串"ababab"。所有的被插入成份标号的子匹配将可以用\N或者$N语法来回溯引用到。它允许子表达式匹配空字符串,子表达式以1为开始从左往右编号。子表达式0就是整个表达式。
展开全部

相关文章

更多+相同厂商

热门推荐

  • 最新排行
  • 最热排行
  • 评分最高
排行榜

    点击查看更多

      点击查看更多

        点击查看更多

        说两句网友评论

          我要评论...
          取消