解决Nginx与Apache下获取访问链接的兼容性问题

因为本地开发环境是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; 
 }
参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

robin_sky

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值