串中新建包含请求串的URL. 在替换串中使用问号,以标明其后继的成分应该被重新注入到QUERY_STRING中. 要删除一个已有的请求串,可以用问号来终结替换字符串.
注意
一个特殊功能: 在用http://thishost[:thisport]作为替换字段的前缀时, mod_rewrite会把它自动剥离出去. 在配合生成主机名的映射函数使用的时候, 这个对隐含的外部重定向URL的精简化操作是有用的 是重要的. 下面例子一节中的第一个例子有助于理解这点.
谨记
此功能的存在,以http://thishost为前缀的无条件外部重定向在你自己的服务器上是无效的.要做这样一个自身的重定向, 使用R标记 (见下文).
此外,Substitution还可以追加特殊标记
[flags]
作为RewriteRule指令的第三个参数. Flags是一个包含以逗号分隔的下列标记的列表:
''redirect|R [=code]'' (强制重定向 redirect)
以http://thishost[:thisport]/(使新的URL成为一个URI) 为前缀的Substitution可以强制性执行一个外部重定向. 如果code没有指定,则产生一个HTTP响应代码302(临时性移动). 如果需要使用在300-400范围内的其他响应代码,只需在此指定这个数值即可, 另外,还可以使用下列符号名称之一: temp (默认的), permanent, seeother. 用它可以把规范化的URL反馈给客户端,如, 重写``/~''''为 ``/u/'''',或对/u/user加上斜杠,等等.
注意: 在使用这个标记时, 确保该替换字段是一个有效的URL! 否则,它会指向一个无效的位置! 并且要记住,此标记本身只是对URL加上 http://thishost[:thisport]/的前缀,重写操作仍然会继续. 通常,你会希望停止重写操作而立即重定向,则还需要使用''L''标记.
''forbidden|F'' (强制URL为被禁止的 forbidden)
强制当前URL为被禁止的,即,立即反馈一个HTTP响应代码403(被禁止的). 使用这个标记,可以链接若干RewriteConds以有条件地阻塞某些URL.
''gone|G'' (强制URL为已废弃的 gone)
强制当前URL为已废弃的,即,立即反馈一个HTTP响应代码410(已废弃的). 使用这个标记,可以标明页面已经被废弃而不存在了.
''proxy|P'' (强制为代理 proxy)
此标记使替换成分被内部地强制为代理请求,并立即(即, 重写规则处理立即中断)把处理移交给代理模块. 你 确保此替换串是一个有效的(比如常见的以 http://hostname开头的)能够为Apache代理模块所处理的URI. 使用这个标记,可以把某些远程成分映射到本地服务器名称空间, 从而增强了ProxyPass指令的功能.
注意: 要使用这个功能,代理模块 编译在Apache服务器中. 如果你不能确定,可以检查``httpd -l''''的输出中是否有mod_proxy.c. 如果有,则mod_rewrite可以使用这个功能; 如果没有,则 启用mod_proxy并重新编译``httpd''''程序.
''last|L'' ( 一个规则 last)
立即停止重写操作,并不再应用其他重写规则. 它对应于Perl中的last命令或C语言中的break命令. 这个标记可以阻止当前已被重写的URL为其后继的规则所重写. 举例,使用它可以重写根路径的URL(''/'')为实际存在的URL, 比如, ''/e/www/''.
''next|N'' (重新执行 next round)
重新执行重写操作(从第一个规则重新开始). 这时再次进行处理的URL已经不是原始的URL了,而是经 一个重写规则处理的URL. 它对应于Perl中的next命令或C语言中的continue命令. 此标记可以重新开始重写操作,即, 立即回到循环的头部.
但是要小心,不要制造死循环!
''chain|C'' (与下一个规则相链接 chained)
此标记使当前规则与下一个(其本身又可以与其后继规则相链接的, 并可以如此反复的)规则相链接. 它产生这样一个效果: 如果一个规则被匹配,通常会继续处理其后继规则, 即,这个标记不起作用;如果规则不能被匹配, 则其后继的链接的规则会被忽略.比如,在执行一个外部重定向时, |