從PHP $_SERVER相關參數判斷是否支援Rewrite模組_php技巧

來源:互聯網
上載者:User
如果是http://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是http://www.jb51.net/?=p1141,則需要使用301重新導向到http://www.jb51.net/p1141.html,如下:

複製代碼 代碼如下:

header("HTTP/1.1 301 Moved Permanently");
header("Location:http://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迴圈重新導向問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.