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