True, PATH_INFO is not always available. Unfortunately the REQUEST_URI will not reflect changes made by the Rewrite engine.
I use the rewrite rule to get improved SEO results for multilang sites.
Here $_SERVER after RewriteRule (local machine, so no GEOIP available):
Array
(
[REDIRECT_GEOIP_COUNTRY_CODE] => --
[REDIRECT_GEOIP_COUNTRY_NAME] => N/A
[REDIRECT_STATUS] => 200
[GEOIP_COUNTRY_CODE] => --
[GEOIP_COUNTRY_NAME] => N/A
[HTTP_HOST] => testdrive
[HTTP_USER_AGENT] => Mozilla/5.0 (X11; U; Linux x86_64; nl; rv:1.9.0.5) Gecko/2008121623 Ubuntu/8.10 (intrepid) Firefox/3.0.5 FirePHP/0.2.1
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => nl,en-us;q=0.7,en;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 300
[HTTP_CONNECTION] => keep-alive
[HTTP_COOKIE] => lang=nl; PHPSESSID=5233836e96cae49bd854d4461e7358xs
[HTTP_CACHE_CONTROL] => max-age=0
[PATH] => /usr/local/bin:/usr/bin:/bin
[SERVER_SIGNATURE] => <address>Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.1 PHP/5.2.6-2ubuntu4 with Suhosin-Patch Server at sg Port 80</address>
[SERVER_SOFTWARE] => Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.1 PHP/5.2.6-2ubuntu4 with Suhosin-Patch
[SERVER_NAME] => testdrive
[SERVER_ADDR] => 192.168.1.104
[SERVER_PORT] => 80
[REMOTE_ADDR] => 192.168.1.104
[DOCUMENT_ROOT] => /home/web/htdocs/yii/WebRoot/testdrive
[SERVER_ADMIN] => [no address given]
[SCRIPT_FILENAME] => /home/web/htdocs/yii/WebRoot/testdrive/index.php
[REMOTE_PORT] => 60364
[REDIRECT_QUERY_STRING] => lang=es
[REDIRECT_URL] => /es
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => lang=es
[REQUEST_URI] => /es
[SCRIPT_NAME] => /index.php
[PATH_INFO] => /
[PATH_TRANSLATED] => /home/web/htdocs/yii/WebRoot/testdrive/index.php
[PHP_SELF] => /index.php/
[REQUEST_TIME] => 1231756314
[argv] => Array
(
[0] => lang=es
)
[argc] => 1
)
Even REDIRECT_URL is not reflecting any change. Could it be a solution to prevail PATH_INFO if available? Perhaps with a switch in urlManager?