SERVER相关参数判定是否支持Rewrite模块

假如是形式的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是?=p1141,则需要利用301重定向到,如下:

header("HTTP/1.1 301 Moved Permanently");
header("Location:");
然后再走重定向后措施的流程,这样就担保了页面的统一,同时也办理了ISAPI和Apache的Rewrite轮回重定向问题。

ISAPI和Apache是否重定向判定:

ISAPI利用:

$_SERVER['HTTP_X_REWRITE_URL']

Apache利用:

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

只要把握$_SERVER各参数的用法,就能轻松办理ISAPI和Apache的Rewrite轮回重定向问题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7909.html