Apache本地环境下出现循环重定向

Posted 努力的喵喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache本地环境下出现循环重定向相关的知识,希望对你有一定的参考价值。

最近发现一个很奇怪的问题,用了很久的apache+php访问项目,昨天突然不行了,出现了这个

然后我一点点测试,我用的是TP框架,Indexaciton的index中调用框架里的一个redirect函数

public function index() {
        /*if(empty($_SESSION[\'admin\'][\'admin_id\'])) {
           $this->redirect(\'Public/login\',\'\' , 0,\'页面跳转中~\');
        }*/

        if(empty($_SESSION[\'admin\'][\'admin_id\'])) {
            if(!checkCookieAdmin()){
                $this->redirect(\'Public/login\',\'\' , 0,\'页面跳转中~\');
            }
        }     
        $this->display(\'Public:index\');
    }

在tp action.class.php redirect函数中调用redirect

protected function redirect($url,$params=array(),$delay=0,$msg=\'\') {
        if(C(\'LOG_RECORD\')) Log::save();
        $url    =   U($url,$params);
        redirect($url,$delay,$msg);
    }

functions.php 里面的redirect函数

// URL重定向
function redirect($url,$time=0,$msg=\'\')
{
    //多行URL地址支持
    $url = str_replace(array("\\n", "\\r"), \'\', $url);
    if(empty($msg))
        $msg    =   "系统将在{$time}秒之后自动跳转到{$url}!";
    if (!headers_sent()) {
        // redirect
        if(0===$time) {
            header("Location: ".$url);
        }else {
            header("refresh:{$time};url={$url}");
            echo($msg);
        }
        exit();
    }else {
        $str    = "<meta http-equiv=\'Refresh\' content=\'{$time};URL={$url}\'>";
        if($time!=0)
            $str   .=   $msg;
        exit($str);
    }
}

这样分析下来,定向都是指向Public中的login的,但是不知道为什么就是不渲染html页面,始终出现循环重定向。

解决的办法:换成了Ngnix服务器,竟然好了!好了!!!!很是神奇啊。。。。

希望各位大神们道出其中的奥秘!

以上是关于Apache本地环境下出现循环重定向的主要内容,如果未能解决你的问题,请参考以下文章

Apache本地VirtualHost重定向到其他VirtualHost

Apache Mod_Rewrite 不断重定向

shiro cas 重定向循环 怎么解决的 哥们?

如何停止重定向循环? Ubuntu 上的 Apache2

Apache禁用本地主机重定向

在 PHP 重定向期间处理片段标识符