(стек LAMP работает на CentOS 6, PHP 5.3.3, httpd версии 2.2.15)
Я пытаюсь передать всю строку запроса в свой PHP-скрипт, но если строка запроса содержит какие-либо знаки вопроса, первый ? символ заменяется символом &.
В access_log отображается правильная строка запроса, включая вопросительный знак.
Однако, если я повторю глобальный запрос $_SERVER['QUERY_STRING'], первый ? заменяется. Поэтому я предполагаю, что перевод/нормализация происходит где-то в PHP.
Например: http://l.sitename.com/IsThis?thequerystring?
Мы ожидаем, что $_SERVER['QUERY_STRING'] будет "IsThis?thequerystring?" Но вместо этого на самом деле это «IsThis&thequerystring?»
Вот запись в access_log:
"GET /IsThis?thequerystring? HTTP/1.1" 200 43 "-"
Вот запись .htaccess:
RewriteCond %{HTTP_HOST} ^l\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/link.php?$1 [NC,L,P,QSA]
Самое странное: он был работать, но теперь не работает после установки обновлений (CentOS, HTTPD, PHP и т. д.).
Спасибо за любые указатели!
/IsThis?thequerystring?
в качестве примера может быть тем, что вы считаете действительным URI? В URI должен быть только один?
, не закодированный в URL. - person Mike Brant   schedule 18.05.2015