因为本地开发环境是win的,用的Apache,但是呢组长用的是Nginx,由于不兼容的问题很多地方都出错(服务器部署的LAMP环境),页面都打不开了,这些页面都使用了URL重写来优化网站,通过调试后笔者发现$_SERVER['REQUEST_URI']的值为空,于是我 将$_SERVER['REQUEST_URI']变量替换成$_SERVER['REDIRECT_URL'],可喜的是那些原本404的页面现在全能 正常访问了。
但这种替换并不是最好的解决方案,因为在nginx和IIS的web服务器下我们无法通过$_SERVER['REDIRECT_URL']获得重写uri。因此笔者参考Zend Framework编写了如下所示的函数,来准确的在各种环境下获得重写的uri
function getRequestUri() { if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch $requestUri = $_SERVER['HTTP_X_REWRITE_URL']; } elseif (isset($_SERVER['REDIRECT_URL'])) { // Check if using mod_rewrite $requestUri = $_SERVER['REDIRECT_URL']; } elseif (isset($_SERVER['REQUEST_URI'])) { $requestUri = $_SERVER['REQUEST_URI']; } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI $requestUri = $_SERVER['ORIG_PATH_INFO']; if (!empty($_SERVER['QUERY_STRING'])) { $requestUri .= '?' . $_SERVER['QUERY_STRING']; } } return $requestUri; }