【问题标题】:Codeigniter always redirecting to the same methodCodeigniter 总是重定向到同一个方法
【发布时间】:2018-08-20 01:58:35
【问题描述】:

我在生产服务器上有一个系统,我想在本地模拟它来更新它,但是之前的程序员使用了一个奇怪的架构。有一个 codeigniter 架构,第一个里面还有另一个......

  • 申请
    • admin(哪些内容控制器和模型......可能未使用)
    • 通用(语言和模型...)
    • 控制器
    • js(为什么在这里...)
    • 关里
      • 缓存、配置、控制器、核心、助手、模型、视图...
    • 用户
      • 缓存、配置、控制器、核心、助手、模型、视图...
  • 系统
  • 等等……

在我的本地机器上模拟这个我有很多乐趣,因为所有路径都是绝对的,yeepee。 所以目前,它在我的本地主机上,配置正确,但是当我尝试登录时,页面只是重新加载。我发现控制器登录的方法登录(所以kanri/login/login)被调用但总是路由到kanri/login/index

在索引页面上,只有一个表单重定向到kanri/login/login方法,所以即使是简单的重定向也不起作用。

文件 kanri/route.php :

defined('BASEPATH') OR exit('No direct script access allowed');
$route['default_controller'] = 'login';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

主要的.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^kanri(/(.*))?$ kanri.php?/$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user(/(.*))?$ user.php?/$2 [L]
</IfModule>

我的控制器:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class MY_Controller extends CI_Controller {

public function __construct()
{
    parent::__construct();

    if($this->session->userdata('flag_admin_login')===FALSE || empty($this->session->userdata('flag_admin_login'))){
        //print "***".$this->session->userdata('member_id')."!!!!!";
        redirect('/', 'refresh');
    }
}
}

我的登录控制器:

class Login extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        echo $this->router->fetch_class() . "<br/>"; // display the controller
        echo $this->router->fetch_method() . "<br/>"; //display the method
    }

    public function index(){
        //all code commented
    }

    public function login(){
        //all code commented
    }
} 

我有很多工作要做,但我仍然坚持跑步...... 感谢您的宝贵时间!

【问题讨论】:

  • 使用 HMVC?即控制器是否扩展MX_Controller
  • 不,它正在扩展 CI_controller
  • 那么我不知道那个结构是如何工作的。如果不使用 HMVC 控制器,必须位于 controllers 文件夹中。
  • 目前,不同文件夹中有很多控制器...在初始设置的原始“控制器”文件夹中,在“admin”中,在“kanri”和“user”中...... . 在“Kanri”的子文件夹“core”中,有一个“MY_Controller”,而不是我在上一篇文章中添加的,但是......不像HMVC......
  • 是的,我明白了,因此我发表了评论。如果它不是 HMVC,那它一定是一个严重的 hack——在这种情况下,我怀疑你会在我们看不到的代码上找到帮助。

标签: php .htaccess codeigniter


【解决方案1】:

解决方法很简单……

$config['uri_protocol'] = 'REQUEST_URI';
$config['enable_query_strings'] = FALSE;

【讨论】:

    猜你喜欢
    • 2019-05-17
    • 2013-03-11
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多