【问题标题】:Redirect loop in Codeigniter with single redirect from base controllerCodeigniter 中的重定向循环,带有来自基本控制器的单个重定向
【发布时间】:2015-05-29 16:57:45
【问题描述】:

我有这个基本控制器:

class TCMS_Controller extends  CI_Controller{
    public function __construct(){
        parent::__construct();
        if( ! $this->session->userdata('logged_in')){
            redirect('admin/authenticate/login');
        }
        //Loop to get all settings in the "globals" table
        foreach($this->Settings_model->get_global_settings() as $result){
            $this->global_data[$result->key] = $result->value;
        }
    }
}

所以我有这个基本的重定向:

redirect('admin/authenticate/login'); 如果用户未登录。

我还有这个设置可以从网址中删除index.php

.htaccess:

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

以及下一个配置设置:

$config['base_url'] = 'http://something.herokuapp.com/';
$config['index_page'] = '';

当我尝试访问具有下一个地址的管理部分时:

http://something.herokuapp.com/admin/controller/method

如果我没有登录,我应该被重定向到login 页面:

http://something.herokuapp.com/admin/authenticate/login

但是我得到了一个重定向循环

ERR_TOO_MANY_REDIRECTS

我该如何解决?

页面: http://tcms.herokuapp.com/

管理部分:http://tcms.herokuapp.com/admin/authenticate/login http://tcms.herokuapp.com/admin/dashobard

【问题讨论】:

  • 请检查您的浏览器控制台以查看页面实际尝试重定向到的内容。
  • 你能显示你的刷新网址链接吗?
  • 添加了网站链接

标签: php .htaccess codeigniter redirect codeigniter-routing


【解决方案1】:

我确定您的 admin(如果 admin 是您的文件夹名称,则可能是 authenticate)控制器也扩展了 TCMS_Controller。因此,当它重定向您的admin 控制器时,它会一次又一次地执行TCMS_Controller 的构造函数,并再次重定向到导致无限循环的管理控制器。

要解决这个问题,您需要创建一个不扩展 TCMS_ControllerLogin 控制器,只是扩展 CI_Controller。如果用户未登录,则重定向到此控制器。

【讨论】:

  • admin 是我的控制器文件夹中的一个子文件夹,其中包含所有与管理员相关的控制器。
【解决方案2】:

在基本控制器中进行重定向是不好的做法,因为它可能导致重定向循环:

见:Codeigniter Redirect Loop for user session is logged in

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多