PHP-скрипт не декодирует параметры URL в $ _REQUEST [] (присутствует% 20 значений) после развертывания в 5.2.4 - PullRequest
3 голосов
/ 21 июля 2010

Я разработал PHP-скрипт, который использует $ _REQUEST [] superglobal. Типичный запрос клиента может состоять из:

http://host.name/socnet/add.php?shortid=1&author=NewUser2&comment=Dad%20dad%20dad

Этот URL-адрес переписывается Apache в моей производственной среде на эквивалентный URL-адрес https: // в соответствии со следующим правилом перезаписи:

RewriteRule ^socnet/add.php(.*) https://%{SERVER_NAME}/socnet/add.php$1 [R,L]

При разработке с PHP 5.3.2 и отладке с помощью NetBeans все работает как положено $_REQUEST['comment']="Dad dad dad"

Однако, когда я развернул в своей среде хоста VPS, работающей на PHP 5.2.4 и которая переписывает URL, как описано выше $_REQUEST['comment']="Dad%20dad%20dad" ...

Похоже, что $_REQUEST['comment'] не декодируется по URL, как ожидалось в 5.2.4, и мое правило перезаписи

Любые идеи о том, почему это происходит, и разумный обходной путь будет принята с благодарностью. Это проблема, связанная с версией PHP, или что-то более тонкое? Интересно услышать от любого, кто сталкивался с этой проблемой во время развертывания прежде и как они решили ее.

1 Ответ

1 голос
/ 21 июля 2010

Я подозреваю, что mod_rewrite кодирует его, в результате чего кодируется дважды. Я не пробовал это, но вместо сопоставления (. *), Попробуйте изменить [R,L] на [R,L,QSA]. QSA означает добавленную строку запроса.

EDIT

Правильный вариант, найденный самим ландстатиком, - NE, что означает отсутствие побега.

...