使用 “NE”不对URI进行转义

来源:互联网 发布:荣威rx5矩阵大灯多少钱 编辑:程序博客网 时间:2024/04/30 00:54

最近使用Apache的RewriteRule对URL进行跳转,突然有用户来报打不开页面。

查原因,发现原URL中有 changeboxid%5B%5D=958365 (changeboxid[]=958365)

结果Rewrite跳转时又转了一次,成了changeboxid%255B%255D=958365。

HOHO

 

使用NE标记解决。

 

RewriteCond %{QUERY_STRING} ^a=preship&.*$
RewriteRule ^(/cms/ticket.php.*)$ http://cms.test.com$1 [NE,L,R=301]

 

'noescape|NE'(在输出中不对URI进行转义)
此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下,特殊字符('%', '$', ';'等)会被转义为等值的十六进制编码('%25', '%24', '%3B'等)。此标记可以阻止这样的转义,以允许百分号等符号出现在输出中,比如:

RewriteRule /foo/(.*) /bar?arg=P1/%3d$1 [R,NE]

 

参考URL:

http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html

原创粉丝点击