(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