$_SERVER['REQUEST_URI']获取不到值采用的函数

来源:互联网 发布:龙门式数控切割机 编程 编辑:程序博客网 时间:2024/05/20 14:20
因为网站并发数的不提升,为了提高服务器的处理请求的性能决定安装fastcgi(服务器部署的LAMP环境),正确的安装完成后发现网站的新闻 页面都404了,这些页面都使用了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;  }
0 0
原创粉丝点击