欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從PHP $_SERVER相關(guān)參數(shù)判斷是否支持Rewrite模塊

 更新時(shí)間:2013年09月26日 23:49:29   投稿:mdxy-dxy  
這篇文章主要介紹了如何通過(guò)判斷PHP $_SERVER相關(guān)參數(shù)來(lái)驗(yàn)證頁(yè)面是否重定向,但這只是在Apache環(huán)境下才有效,下面來(lái)具體的看下

如果是//www.dbjr.com.cn/p1141.html形式的URL,可通過(guò)$_SERVER['REQUEST_URI']和$_SERVER['QUERY_STRING']值的區(qū)別來(lái)分析,最主要是如果頁(yè)面是通過(guò)重定向會(huì)產(chǎn)生$_SERVER['REDIRECT_QUERY_STRING']和$_SERVER['REDIRECT_URL']兩上參數(shù),因此判斷頁(yè)面是否重定向就非常簡(jiǎn)單,只需要判斷這兩個(gè)值存在的情況就既可,但這只是在Apache環(huán)境下才有效。

如果是ISAPI Rewrite環(huán)境如何判斷?

如果是ISAPI Rewrite環(huán)境,雖然不會(huì)產(chǎn)生如上$_SERVER['REDIRECT_QUERY_STRING']和$_SERVER['REDIRECT_URL']兩上參數(shù),但同樣會(huì)產(chǎn)生自己獨(dú)特的參數(shù)$_SERVER['HTTP_X_REWRITE_URL'],這個(gè)參數(shù)只有在ISAPI環(huán)境下才會(huì)產(chǎn)生,因此使用這個(gè)參數(shù)就能判斷當(dāng)前的URL是何種形式,方法如下:

復(fù)制代碼 代碼如下:

$isApi = (isset($_SERVER['HTTP_X_REWRITE_URL']) && strpos($_SERVER['HTTP_X_REWRITE_URL'],'?')) ? TRUE : FALSE;

通過(guò)對(duì)當(dāng)前URL顯示形式的判斷,就能知道程序?qū)⑷绾螆?zhí)行以及是否需要301重定向,如果當(dāng)前URL是//www.dbjr.com.cn/?=p1141,則需要使用301重定向到//www.dbjr.com.cn/p1141.html,如下:

復(fù)制代碼 代碼如下:

header("HTTP/1.1 301 Moved Permanently");
header("Location://www.dbjr.com.cn/p1141.html");

然后再走重定向后程序的流程,這樣就保證了頁(yè)面的統(tǒng)一,同時(shí)也解決了ISAPI和Apache的Rewrite循環(huán)重定向問(wèn)題。

ISAPI和Apache是否重定向判斷:

ISAPI使用:

復(fù)制代碼 代碼如下:

$_SERVER['HTTP_X_REWRITE_URL']

Apache使用:

復(fù)制代碼 代碼如下:

$_SERVER['REDIRECT_QUERY_STRING']或$_SERVER['REDIRECT_URL']

只要掌握$_SERVER各參數(shù)的用法,就能輕松解決ISAPI和Apache的Rewrite循環(huán)重定向問(wèn)題。

下面是其它網(wǎng)友的補(bǔ)充可以參考一下

WordPress通過(guò)301重定向?qū)崿F(xiàn)非首先域(非www)跳轉(zhuǎn)向本來(lái)是一個(gè)很簡(jiǎn)單事情,由于沒(méi)弄清楚$_SERVER[‘HTTP_X_REWRITE_URL'] 和$_SERVER[‘REQUEST_URI']的區(qū)別導(dǎo)致了循環(huán)重定向問(wèn)題。
現(xiàn)在來(lái)具體研究下$_SERVER[‘HTTP_X_REWRITE_URL'] 和$_SERVER[‘REQUEST_URI']的區(qū)別
首先要糾正一部分的觀點(diǎn)就是IIS+PHP不支持$_SERVER[‘REQUEST_URI']
不是,不支持是PHP Version 版本的問(wèn)題,php4.4.0不支持 $_SERVER[‘REQUEST_URI'],php5.2.5則增加了支持;

$_SERVER[‘REQUEST_URI']常用來(lái)獲當(dāng)前URL
例如://www.dbjr.com.cn/index.php?p=3
$_SERVER[‘REQUEST_URI']獲得的就是/index.php?p=3這部分。
$_SERVER[“HTTP_X_REWRITE_URL”]則在IIS下獲得的是當(dāng)前URL,在apache下的值為空

例如:
當(dāng)前URL://www.dbjr.com.cn/

IIS環(huán)境下:
$_SERVER[‘REQUEST_URI'] = /index.php
$_SERVER[“HTTP_X_REWRITE_URL”] =/
apache環(huán)境下:
$_SERVER[‘REQUEST_URI'] = /
$_SERVER[“HTTP_X_REWRITE_URL”] =”

當(dāng)前URL://www.dbjr.com.cn/index.php
IIS環(huán)境下:
$_SERVER[‘REQUEST_URI'] = /index.php
$_SERVER[“HTTP_X_REWRITE_URL”] =/index.php

apache環(huán)境下:
$_SERVER[‘REQUEST_URI'] = /index.php
$_SERVER[“HTTP_X_REWRITE_URL”] =”

而我需要的就是判斷當(dāng)前URL是否包含/index.php

由此可見(jiàn),IIS環(huán)境下首先域名重定向用$_SERVER[“HTTP_X_REWRITE_URL”]代替$_SERVER[‘REQUEST_URI'],apache環(huán)境則相反。

相關(guān)文章

最新評(píng)論