У нас есть несколько очень простых правил mod_rewrite:
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 берет на себя перекодировку urlencode строки запроса param
, так что в итоге пользователь получает следующее:
www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
НАПРАВЛЕН НА
www.newdomain.com/something.swf?param=URL_ENCODED_VALUE_OF_URL_ENCODED_VALUE
, поэтому мы получаем значение с двойным URL-кодом. boourns!
Хотя я понимаю, что для этого можно создать правило \? (. *)
... ? $ 1
, я думаю, что должен быть способ сказать mod_rewrite НЕ для urlencode параметров строки запроса ... мы бы не хотели использовать 2 правила, так как допустимые пути:
something.swf (no query string)
и
something.swf?someparams...
, так что да, в идеале ... просто скажите mod_rewrite: пожалуйста, без urlencoding параметров строки запроса ... просто направьте переход на новый URL через R = 302
.