mod_rewrite urlencoding для уже закодированного urlencoded параметра строки запроса - есть ли способ отключить это?

У нас есть несколько очень простых правил 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 .

51
задан MrWhite 8 December 2016 в 01:53
поделиться