在php中用$_SERVER['REQUEST_URI']返回index.php

作者mazerain 文章分类 分类:问题 文章评论 0条评论 阅读次数 已被围观 1414

今天在迁移BLOG时,从Apache放到了IIS环境中,以前用$_SERVER['REQUEST_URI']来判断页面内容显示居然不能用了,结果echo了一下,在IIS服务器中$_SERVER['REQUEST_URI']一直返回的是index.php,后来找到$_SERVER['HTTP_X_REWRITE_URL'] 这个函数(好吧,我承认我水平不行-_-!)在IIS下面居然可以了。

现在来具体研究下$_SERVER['HTTP_X_REWRITE_URL'] 和$_SERVER['REQUEST_URI']的区别
首先要纠正一部分的观点就是IIS+PHP不支持$_SERVER['REQUEST_URI']
不是,不支持是PHP Version 版本的问题,php4.4.0不支持 $_SERVER['REQUEST_URI'],php5.2.5则增加了支持;

$_SERVER['REQUEST_URI']常用来获当前URL
例如:http://blog.0356sh.com/index.php?p=3
$_SERVER['REQUEST_URI']获得的就是/index.php?p=3这部分

$_SERVER["HTTP_X_REWRITE_URL"]则在IIS下获得的是当前URL,在apache下的值为空

例如:
当前URL:http://blog.0356sh.com/
IIS环境下:
$_SERVER['REQUEST_URI'] = /index.php
$_SERVER["HTTP_X_REWRITE_URL"] =/
apache环境下:
$_SERVER['REQUEST_URI'] = /
$_SERVER["HTTP_X_REWRITE_URL"] =”

当前URL:http://blog.0356sh.com/index.php
IIS环境下:
$_SERVER['REQUEST_URI'] = /index.php
$_SERVER["HTTP_X_REWRITE_URL"] =/index.php
apache环境下:
$_SERVER['REQUEST_URI'] = /index.php
$_SERVER["HTTP_X_REWRITE_URL"] =”

而我需要的就是判断当前URL是否包含/index.php

由此可见,IIS环境下首先域名重定向用$_SERVER["HTTP_X_REWRITE_URL"]代替$_SERVER['REQUEST_URI'],apache环境则相反。

版权所有:《晋城生活服务》 => 《在php中用$_SERVER['REQUEST_URI']返回index.php
本文地址:http://blog.0356sh.com/REQUEST_URI-HTTP_X_REWRITE_URL.html
除非注明,文章均为 《晋城生活服务》 原创,欢迎转载!转载请注明本文地址,谢谢。

et_highlighter

发表评论: