与
ESC
输入关键词搜索文章

windows2003 IIS6环境正确获取$_SERVER['REQUEST_URI']的方法

全文约 312 字预计阅读 2 分钟
在apache或nginx的服务器上使用自带重写功能后都能正确获取的重写后的新地址,可iis6是不一样,没有自带重写功能,安装了ISAPI_Rewrite重写组件后,如果使用了重写,IIS不会将在地址栏中的URL记为REQUEST_URI,而是重写后的URI 如下面的URL RewriteRule (.*)$ /index.php?s=$1 [I] 本来是执行Pro模块的show方法,为1,在Pro模块中获取REQUEST_URI,值应为/pro/show/id/1.htm 但在IIS中是 /index.php?s=/pro/show/id/1.htm 最后找到了段代码解决: //IIS REQUEST_URI compatibility 是否使用了 ISAPI_Rewrite if (isset($_SERVER['REQUEST_URI'])) { //ISAPI_Rewrite 3.x if (isset($_SERVER['HTTP_X_REWRITE_URL'])){ $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; } //ISAPI_Rewrite 2.x w/ HTTPD.INI configuration 其中2.0就调用这个成功获取重写后的新地址 elseif (isset($_SERVER['HTTP_REQUEST_URI'])){ $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_REQUEST_URI']; } //ISAPI_Rewrite isn't installed or not configured else { $_SERVER['HTTP_REQUEST_URI']=isset($_SERVER['SCRIPT_NAME'])?$_SERVER['SCRIPT_NAME']:$_SERVER['PHP_SELF']; if (isset($_SERVER['QUERY_STRING'])) $_SERVER['HTTP_REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING']; $_SERVER['REQUEST_URI']=$_SERVER['HTTP_REQUEST_URI']; } } 把以上代码加到你要获取REQUEST_URI的前面执行,根据实际情况修改! 希望能给你带来帮助,转载注明源地址!谢谢
windows2003 IIS6环境正确获取$_SERVER['REQUEST_URI']的方法
分享

发表评论

评论 0 条

暂无评论,来说点什么吧。