rewriterule的标志位用来指定rewriterule的行为,可以是单独的一个,也可以是一个组合标志,语法如下:
RewriteRule pattern target [Flag1,Flag2,Flag3]
一些常用的flag:
· 'last|L'(结尾规则)
立即停止重写操作,并不再应用其他重写规则。它对应于Perl中的last命令或C语言中的break命令。这个标记用于阻止当前已被重写的URL被后继规则再次重写。例如,使用它可以重写根路径的URL('/')为实际存在的URL(比如:'/e/www/')。
· 'proxy|P'(强制为代理)
此标记使替换成分被内部地强制作为代理请求发送,并立即中断重写处理,然后把处理移交给mod_proxy模块。你必须确保此替换串是一个能够被mod_proxy处理的有效URI(比如以http://hostname开头),否则将得到一个代理模块返回的错误。使用这个标记,可以把某些远程成分映射到本地服务器域名空间,从而增强了ProxyPass指令的功能。
注意:要使用这个功能,必须已经启用了mod_proxy模块。
· 'redirect|R [=code]'(强制外部重定向)
若target以http://thishost[:thisport]/(使新的URL成为一个URI)开头,可以强制性执行一个外部重定向。如果没有指定code,则产生一个HTTP响应码302(临时性移动)。如果需要使用在300-400范围内的其他响应代码,只需在此指定即可(或使用下列符号名称之一:temp(默认), permanent, seeother)。使用它可以把规范化的URL反馈给客户端,如将"/~"重写为"/u/",或始终对/u/user加上斜杠,等等。
注意:在使用这个标记时,必须确保该替换字段是一个有效的URL。否则,它会指向一个无效的位置!并且要记住,此标记本身只是对URL加上http://thishost[:thisport]/前缀,重写操作仍然会继续进行。通常,你还会希望停止重写操作而立即重定向,那么就还需要使用'L'标记。即[R,L]
· 'next|N'(从头再来)
重新执行重写操作(从第一个规则重新开始)。此时再次进行处理的URL已经不是原始的URL了,而是经最后一个重写规则处理过的URL。它对应于Perl中的next命令或C语言中的continue命令。此标记可以重新开始重写操作(立即回到循环的开头)。但是要小心,不要制造死循环!
· 'noescape|NE'(在输出中不对URI进行转义)
此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下,特殊字符('%', '$', ';'等)会被转义为等值的十六进制编码('%25', '%24', '%3B'等)。此标记可以阻止这样的转义,以允许百分号等符号出现在输出中,比如:
RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
可以使'/foo/zed转向到一个安全的请求'/bar?arg=P1=zed'。
· 'chain|C'(链接下一规则)
此标记使当前规则与下一个规则相链接。它产生这样的效果:如果一个规则被匹配,则继续处理其后继规则,也就是这个标记不起作用;如果该规则不被匹配,则其后继规则将被跳过。比如,在一个目录级规则中执行一个外部重定向时,你可能需要删除".www"(此处不应该出现".www")。
· 'passthrough|PT'(移交给下一个处理器)
此标记强制重写引擎将内部request_rec结构中的uri字段设置为filename字段的值,这个小小的修改使得RewriteRule指令的输出能够被(从URI转换到文件名的)Alias, ScriptAlias, Redirect等指令进行后续处理[原文:This flag is just a hack to enable post-processing of the output of RewriteRule directives, using Alias, ScriptAlias, Redirect, and other directives from various URI-to-filename translators.]。举一个能说明其含义的例子: 如果要将/abc重写为/def, 然后再使用mod_alias将/def转换为/ghi,可以这样:
RewriteRule ^/abc(.*) /def$1 [PT]
Alias /def /ghi
如果省略了PT标记,虽然将uri=/abc/...重写为filename=/def/...的部分运作正常,但是后续的mod_alias在试图将URI转换到文件名时会遭遇失效。
注意:如果需要混合使用多个将URI转换到文件名的模块时,就必须使用这个标记。。此处混合使用mod_alias和mod_rewrite就是个典型的例子。
再来个例子:
[PT] 例子2 写道
Alias /icons /usr/local/apache/icons
RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT]
当请求/pics/下的图片文件时, 实际是返回的是 /icons/目录下的同名文件. 需要注意的是一定要设置 [PT] 标志. 否则Alias设置无效.
更多内容请移步:
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html#rewriterule
分享到:
相关推荐
`RewriteRule`还支持一些标志(flags),如[L](last,表示这是最后一个规则)、[R](redirect,使浏览器重定向)和[N](next,使规则循环执行)等。 5. **RewriteOptions**:这个指令允许设置一些特殊选项,比如`...
### Apache2.2 URL重写指南(RewriteRule) #### 一、简介 在Web开发与维护过程中,URL重定向是一项非常重要的技术手段,尤其是在网站重构或者域名更改时,能够帮助用户平滑过渡到新的资源位置,同时也利于搜索...
关于Apache_mod_rewrite的中文配置与RewriteRule规则详细介绍 在当今互联网时代,网站优化与安全性是网站管理员关注的焦点。Apache_mod_rewrite作为一个强大的工具,它不仅能够帮助网站优化URL结构,提升用户体验,...
Apache重写是Web服务器Apache的一项强大功能,它允许我们通过RewriteRule指令来改变URL的结构,从而实现URL隐藏、动态URL静态化、路径映射等目的。这在优化网站SEO、提高用户体验以及管理复杂应用架构时尤为重要。...
RewriteRule指令用于定义重写规则,它根据指定的模式匹配URL,并将匹配到的部分替换为新的值。其基本语法如下: ```apache RewriteRule pattern replacement [flags] ``` 其中: - `pattern`: 是一个Perl兼容的正则...
每个 `RewriteRule` 表达式由三部分组成:模式(Pattern)、替换(Substitution)和标志(Flags),它们共同定义了 URL 重写的逻辑。 通过启用伪静态,你可以看到网站的 URL 从带有参数的动态形式转变为简洁的静态...
- `[flags]` 标志可以包含多个选项,如`L`, `PT`, `C`, `CO`, `E`, `F`, `G`, `H`, `N`等,分别用于控制重写规则的行为。 7. **使用场景**: - 隐藏网站的真实路径,提高安全性。 - 优化SEO,将动态URL转换为...
RewriteRule Pattern Substitution [flags] ``` - `Pattern`:一个perl兼容的正则表达式,用于匹配当前URL。 - `Substitution`:匹配成功后,URL将被替换为这个字符串。 - `[flags]`:可选的标记,用于控制重写...
以下是部分重要的RewriteRule标志: 1. **R[=code]**:强制外部重定向,如`[R=301]`表示永久重定向,通常用于URL改版。 2. **F**:禁止URL,返回403 HTTP状态码,阻止用户访问。 3. **G**:强制URL为GONE,返回410 ...
Apache服务器的mod_rewrite模块提供了一个强大的URL处理机制,允许开发者通过重写URL模式来改善网站的SEO(搜索引擎优化)和用户体验。RewriteCond指令是mod_rewrite模块的一个核心组件,它用来设置条件,只有当条件...
它的基本格式为`RewriteRule pattern substitution [flags]`,其中`pattern`是匹配URL的正则表达式,`substitution`是匹配成功后的替换目标,`flags`是一些可选参数,如[L](表示最后一规则)、[R](强制外部重定向...
它的基本语法是`RewriteRule pattern substitution [flags]`,其中`pattern`是用于匹配URL的模式,`substitution`是重写后的URL,而`[flags]`则是规则的一些额外指令,比如`L`(Last),表示这是当前规则集的最后一...
3. **RewriteRule规则**:实际的URL重写操作,格式为`RewriteRule pattern substitution [flags]`。`pattern`是需要匹配的URL模式,`substitution`是重写后的URL,`flags`是可选的参数,如`L`(last,表示结束当前...
`RewriteRule pattern substitution [flags]`,其中`pattern`是需要匹配的URL模式,`substitution`是重写后的URL,`flags`是一系列可选参数,如`R`, `L`, `C`, `NE`, `NC`, `G`, `QSA`等。 - `[R=301]`: 强制进行...
`^(.*)$`匹配URL的任何部分,`$1`是捕获的匹配项,`r=301`表示301永久重定向,`nc`表示不区分大小写。 4. **URL重定向示例** 在文中,作者使用了多条规则来实现不同子域名到新域名的重定向,如: ``` ...
通过 `RewriteRule` 或其他指令设置特定的 Cookie,例如:`RewriteRule ^ / [C=cookieName:cookieValue]`。 **3. **Set environmental variable**:** 设置环境变量,可以在规则中使用 `%{ENV:var}` 访问这些变量...