假如是形式的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轮回重定向问题。