溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么從PHP $_SERVER相關參數判斷是否支持Rewrite模塊

發布時間:2021-08-09 23:15:08 來源:億速云 閱讀:134 作者:chen 欄目:開發技術

本篇內容介紹了“怎么從PHP $_SERVER相關參數判斷是否支持Rewrite模塊”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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

如果是ISAPI Rewrite環境如何判斷?

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

復制代碼 代碼如下:


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

通過對當前URL顯示形式的判斷,就能知道程序將如何執行以及是否需要301重定向,如果當前URL是//www.jb51.net/?=p1141,則需要使用301重定向到//www.jb51.net/p1141.html,如下:

復制代碼 代碼如下:


header("HTTP/1.1 301 Moved Permanently");
header("Location://www.jb51.net/p1141.html");

然后再走重定向后程序的流程,這樣就保證了頁面的統一,同時也解決了ISAPI和Apache的Rewrite循環重定向問題。

ISAPI和Apache是否重定向判斷:

ISAPI使用:

復制代碼 代碼如下:


$_SERVER['HTTP_X_REWRITE_URL']

Apache使用:

復制代碼 代碼如下:


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

只要掌握$_SERVER各參數的用法,就能輕松解決ISAPI和Apache的Rewrite循環重定向問題。

下面是其它網友的補充可以參考一下

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

$_SERVER[‘REQUEST_URI']常用來獲當前URL
例如://www.jb51.net/index.php?p=3
$_SERVER[‘REQUEST_URI']獲得的就是/index.php?p=3這部分。
$_SERVER[“HTTP_X_REWRITE_URL”]則在IIS下獲得的是當前URL,在apache下的值為空

例如:
當前URL://www.jb51.net/

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

當前URL://www.jb51.net/index.php
IIS環境下:
$_SERVER[‘REQUEST_URI'] = /index.php
$_SERVER[“HTTP_X_REWRITE_URL”] =/index.php

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

而我需要的就是判斷當前URL是否包含/index.php

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

“怎么從PHP $_SERVER相關參數判斷是否支持Rewrite模塊”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女