從PHP $_SERVER相關(guān)參數(shù)判斷是否支持Rewrite模塊
如果是//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是何種形式,方法如下:
$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,如下:
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使用:
$_SERVER['HTTP_X_REWRITE_URL']
Apache使用:
$_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)境則相反。
- PHP中$_SERVER的詳細(xì)參數(shù)與說(shuō)明
- PHP $_SERVER詳解
- php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之間的區(qū)別
- php $_SERVER當(dāng)前完整url的寫(xiě)法
- php $_SERVER["REQUEST_URI"]獲取值的通用解決方法
- PHP5下$_SERVER變量不再受magic_quotes_gpc保護(hù)的彌補(bǔ)方法
- PHP中$_SERVER的詳細(xì)參數(shù)與說(shuō)明介紹
- php $_SERVER windows系統(tǒng)與linux系統(tǒng)下的區(qū)別說(shuō)明
- php幾個(gè)預(yù)定義變量$_SERVER用法小結(jié)
- php中time()與$_SERVER[REQUEST_TIME]用法區(qū)別
- PHP中$_SERVER使用說(shuō)明
相關(guān)文章
通過(guò)PHP自帶的服務(wù)器來(lái)查看正則匹配結(jié)果的方法
這篇文章主要介紹了通過(guò)PHP自帶的服務(wù)器來(lái)查看正則匹配結(jié)果的方法,通過(guò)這樣的方式可以在搬上服務(wù)器之前在工作環(huán)境上完成很多輕量級(jí)的試驗(yàn),需要的朋友可以參考下2015-12-12PHP分頁(yè)顯示的方法分析【附PHP通用分頁(yè)類(lèi)】
這篇文章主要介紹了PHP分頁(yè)顯示的方法,結(jié)合實(shí)例形式分析了php數(shù)據(jù)庫(kù)查詢(xún)及內(nèi)容結(jié)合HTML分頁(yè)顯示的簡(jiǎn)單操作技巧,并附帶一個(gè)PHP通用分頁(yè)類(lèi)供大家參考使用,需要的朋友可以參考下2018-05-05php采集自中央氣象臺(tái)范圍覆蓋全國(guó)的天氣預(yù)報(bào)代碼實(shí)例
這篇文章主要介紹了php采集自中央氣象臺(tái)范圍覆蓋全國(guó)的天氣預(yù)報(bào)代碼實(shí)例,較為詳細(xì)的分析了采集的技巧及對(duì)應(yīng)接口的調(diào)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01php5.4以下版本json不支持不轉(zhuǎn)義內(nèi)容中文的解決方法
這篇文章主要介紹了php5.4以下版本json不支持不轉(zhuǎn)義內(nèi)容中文的解決方法,通過(guò)一個(gè)自定義php方法實(shí)現(xiàn)模擬joson中文不轉(zhuǎn)義,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01php使用PDO下exec()函數(shù)查詢(xún)執(zhí)行后受影響行數(shù)的方法
這篇文章主要介紹了php使用PDO下exec()函數(shù)查詢(xún)執(zhí)行后受影響行數(shù)的方法,結(jié)合實(shí)例形式分析了php在使用pdo進(jìn)行增刪改操作時(shí)exec()函數(shù)查詢(xún)操作執(zhí)行后受影響行數(shù)的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2017-03-03php.ini?中文版?(PHP7,PHP8)?金步國(guó)
php.ini?中文版?(PHP7,PHP8),比較適合使用php7、php8的朋友使用,需要的朋友可以參考下2023-09-09動(dòng)易數(shù)據(jù)轉(zhuǎn)成dedecms的php程序
動(dòng)易數(shù)據(jù)轉(zhuǎn)成dedecms的php程序...2007-04-04