Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2168621
  • 博文数量: 317
  • 博客积分: 5670
  • 博客等级: 大校
  • 技术积分: 3677
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-10 17:51
文章分类

全部博文(317)

文章存档

2016年(2)

2015年(44)

2014年(68)

2013年(42)

2012年(23)

2011年(51)

2010年(67)

2009年(17)

2008年(3)

分类: LINUX

2014-03-27 16:43:31

Apache重写模块详解

    Apache重写模块即mod_rewrite模块应用非常广泛,在处理url重写规则中发挥了重要作用。如果使用基于目录级的    (.htaccess)重写规则,要注意一点那就是必须打开此目录的FollowSymLinks(决定是否可以通过符号连接跨越DocumentRoot)属性且在.htaccess里要声明RewriteEngine on。

RewriteCond规则参数

该指令定义了规则生效的条件。在一个RewriteRule指令之前可以有一个或多个RewriteCond指令。

RewriteCond TestString CondPattern [flags]

1、TestString是一个纯文本的字符串,还可以是以下几个值:

    》RewriteRule反向引用;
        》RewriteCond反向引用;
        》RewriteMap扩展;
        》服务器变量。
        

2、CondPattern是一个正则表达式。
        》可以在CondPattern串的开头使用'!'(惊叹号)来指定不匹配;
        》CondPatterns有若干特殊的变种。除了正则表达式的标准用法,还有下列用法:
        

3、flags是一个以逗号分隔的以下标记的列表:
        》‘nocase|NC’:忽略大小写;
        》‘ornext|OR’:或下一条件。它以OR方式组合若干规则的条件,而不是隐含的AND。

RewriteRule规则参数

RewriteRule指令是重写引擎的根本,此指定可以多次定义,每个指定定义一个简单的重写规则,按顺序依次执行生效。RewriteRule的语法规则如下:

RewriteRule Pattern Substitution [flags]

1、Pattern是一个正则表达式;

    2、Substitution是替换字符串,该字符串可以是如下值:
        》对Pattern反向应用($N);
        》对最后匹配的RewriteCond的反向引用(%1);
        》规则中的服务器变量
        》映射函数调用(${mapname:key|default})

    3、Flags是一个以逗号分隔的下列标记的列表:
        》‘chain|C’:链接下一规则。如果一个规则被匹配,则继续处理后续规则,否则,跳过后续规则;
        》‘env|E=VAR:VAL’:设置环境变量。VAL可以包含正则表达式的反向引用($N和%N)。这个标记可以被多次使用从而用来设置多个环境变量;
        》‘forbidden|F’:强制禁止当前URL,反馈403响应码;
        》‘gone|G’:强制当前URL为已废弃;
        》‘handler|H=Content-handler’:强制指定内容处理器;
        》‘last|L’:立即停止重写操作,并不再应用其它重写规则。相当于程序中的break命令。这个规则用来阻止当前规则被后续规则再次重写
        》‘next|N’:重新执行重写操作,从第一个规则重新开始。此时再次进行处理的URL已经不是原始的URL了,而是经最后一个重写规则处理过的URL;
        》‘nocase|NC’:忽略大小写;
        》‘noescape|NE’:在输出中不对URI进行转义。阻止mod_rewrite对重写结果应用常规的URI转义规则;
        》‘nosubreq|NS’:不对内部子请求进行处理;
        》‘proxy|P’:强制为代理;
        》‘passthrough|PT’:移交给下一个处理器。使得RewriteRule指令的输出能够被(从URI转换到文件名的)Alias, ScriptAlias, Redirect等指令进行后续处理;
        》‘qsappend|QSA’:追加查询字符串。此标记强制重写引擎在已有的替换字符串中追加一个查询字符串,而不是简单的替换;
        》‘redirect|R [=code]’:强制重定向。默认响应码是302。如果你希望停止重写操作而立即重定向,那么就还需要使用'L'标记
        》‘skip|S=num’:跳过后继规则。跳过当前匹配规则之后的num个规则。
        》‘type|T=MIME-type’:强制MIME类型,可以用来基于某些特定条件强制设置内容类型

阅读(1442) | 评论(0) | 转发(0) |
0

上一篇:APACHE 模块 详解

下一篇:Apache服务器优化

给主人留下些什么吧!~~