Apache mod_重写urlcodeding一个已经urlcodeding的查询字符串参数-有没有办法禁用它?

Apache mod_重写urlcodeding一个已经urlcodeding的查询字符串参数-有没有办法禁用它?,apache,mod-rewrite,Apache,Mod Rewrite,我们有一些非常基本的mod_重写规则: RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L] mod_rewrite似乎完成了它的工作,如果用户正在访问: something.swf?param=value,它被正确重定向到http://www.newdomain.com/something.swf?param=value 问题是在这种情况下: www.olddomain.com/somethi

我们有一些非常基本的mod_重写规则:

RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L]
mod_rewrite似乎完成了它的工作,如果用户正在访问:

something.swf?param=value
,它被正确重定向到
http://www.newdomain.com/something.swf?param=value

问题是在这种情况下:

www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
最终发生的事情是mod_rewrite自行重新对查询字符串param进行URL编码

因此,用户最终得到的是:

www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
重定向到

www.newdomain.com/something.swf?param=URL_ENCODED_VALUE_OF_URL_ENCODED_VALUE
所以我们得到了一个双URL编码值。布恩斯

虽然我知道我们可以做一个
\?(.*)
<代码>?$1规则对于此,我认为必须有一种方法告诉mod_rewrite不要对查询字符串参数进行URL编码。。。我们希望避免使用2条规则,因为有效路径为:

something.swf (no query string)


所以是的,理想情况下。。。请告诉mod_rewrite:请不要对查询字符串参数进行URL编码。。。只需通过
R=302

将passthru直接传递到新的URL即可。实现这一点的方法是通过NE(无转义)参数

RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L]
实际上应该读

RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,NE,L]
这将迫使mod_rewrite保留所有查询字符串值,而不进行任何编码/转义


就这么简单:)

doh!答案是,NE参数。很抱歉我敢打赌是的。你能提供答案并将其标记为已接受吗?(我想这样做是有时间限制的,但请尽快这样做:P)yea说我需要100个代表在不到8小时内回答我自己的问题。稍后将回答。可能的副本实际上可能存在与此相关的错误。在URL的路径段中也包含URL编码字符之前,NE是一个不错的选择。请参阅:在此处删除标志的文档链接,以供将来的读者阅读:
RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,NE,L]