在使用标志NE时映射它们之前不应该mod_rewrite unescape URL吗?

时间:2013-05-30 23:23:02

标签: apache mod-rewrite url-rewriting

我正在使用RewriteCond指令检查QUERY_STRING是否有匹配的密钥,如果匹配,我将用户从当前页面重定向到最后丢弃QUERY_STRING的其他站点。

请求:www.mysite.com/something.jsp?Mw%3D%3D&Tm90YXMgZGUgcHJlbnNh

应重定向到: http://othersite.com/something

RewriteEngine On
RewriteCond \/something\.jsp%{QUERY_STRING} Mw%3D%3D&Tm90YXMgZGUgcHJlbnNh
RewriteRule .$ %{ENV:SCHEME}://othersite.com/something? [R=301,L,NE]

但是当我提出请求时,我会被重定向到:

http://othersite.com/something?Mw%253D%253D&Tm90YXMgZGUgcHJlbnNh

似乎mod_rewirte将网址中的“%”转义为“%25”。

1 个答案:

答案 0 :(得分:0)

标志的说明顺序很重要,解决方案包括按照标志的顺序改变:[R = 301,NE,L]

[L]标志使mod_rewrite停止处理规则集。

杜!