伪命题:PHP识别url重写请求

时间:2023-03-08 21:56:23
伪命题:PHP识别url重写请求

手上有一个网站,然后启用了伪静态,因为一些设置上的原因,一段时间后,发现收录的都是.php的文件,而启用的伪静态地址则收录很少,在更改设置后,想尽快去掉.php的收录,然后想将.php的地址转向.html地址。 参考下面一篇文章后,在程序里编写对'HTTP_X_REWRITE_URL’等变量的判断,然后设置转向,返回多重重定向错误。尝试在伪静态规则里编写规则301重定向,还是不行。 在参考其他一些大型网站设置后,发现并没有哪个网站在启用伪静态后还限制对.PHP的访问。 在实际中,对'HTTP_X_REWRITE_URL’的判断并不能识别是伪静态转向还是用户或蜘蛛访问,所以在通过此变量来实现对php文件的禁止访问本身不成立。 如果确实要禁止php的文件访问,应该将PHP文件转移到其他地方后,再在相应的伪静态规则中编写。或直接使用robots.txt实现对蜘蛛对.php文件的禁行! ____________________________________________________________________________PHP识别url重写请求(转自)现在很多PHP程序都使用了url重写技术来优化url,但是有时候我们要在PHP程序中区分默认url的请求和url重写后的请求,这该如何处理呢?

我的解决方案是在常量$_SERVER里面找答案,在不同的服务器中$_SERVER都会有一个索引用来记录重写请求访问重写之前的路径

根据我的测试,部分主流服务器的索引如下

IIS7 + Rewrite Module-> $_SERVER['HTTP_X_ORIGINAL_URL']

IIS6 + ISAPI Rewite-> $_SERVER['HTTP_X_REWRITE_URL’]

Apache2-> $_SERVER['REQUEST_URI’] 或 $_SERVER['REDIRECT_URL']

nginx-> $_SERVER['REQUEST_URI’]

有了这个参数,我们就可以在PHP中来判断请求url来自于重写地址的还是默认格式的地址了

//判定是否是IIS7 并且赋值$_SERVER['REQUEST_URI']

if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {

$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];

}

//如果不是IIS7 判定是否是IIS6 并且赋值$_SERVER['REQUEST_URI']

else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {

$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];

}

本文转载自 深圳市乐道网络科技(www.ledaokj.com) 详文参考:伪命题:PHP识别url重写请求