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

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

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

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

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

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

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

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

通過對當(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");

然后再走重定向后程序的流程,這樣就保證了頁面的統(tǒng)一,同時也解決了ISAPI和Apache的Rewrite循環(huá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ǎng)友的補(bǔ)充可以參考一下

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

$_SERVER[‘REQUEST_URI']常用來獲當(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

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

相關(guān)文章

最新評論