We have some very basic mod_rewrite rules:
RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L]
mod_rewrite seems to do its job, and if the user is accessing:
something.swf?param=value
, it is redirected correctly to http://www.newdomain.com/something.swf?param=value
the problem is in this situation:
www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
what ends up happening is mod_rewrite takes it upon it self to re-urlencode the query string param
so what the user ends up with is:
www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
REDIRECTED TO
www.newdomain.com/something.swf?param=URL_ENCODED_VALUE_OF_URL_ENCODED_VALUE
so we end up with a double-urlencoded value. boourns!
While I do understand we could make a ?(.*)
... ?$1
rule for this, I am thinking there must be a way to tell mod_rewrite NOT to urlencode the query string params... we would like to avoid using 2 rules since valid paths are:
something.swf (no query string)
and
something.swf?someparams...
so yea, ideally... just tell mod_rewrite: please, no urlencoding of query string params... just direct passthru to the new URL via R=302
.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…