几个目录中控制器上的404错误,

时间:2011-04-26 01:07:44

标签: codeigniter-2

我正在使用Codeigniter 2.0.1。当我打电话的时候......

http://localhost/index.php/admin/login ./controllers/admin/login.php

它工作正常,但是当我使用admin目录中的文件夹调用下面的url时,它会抛出404错误。

http://localhost/index.php/admin/new_dir/dashboard ./controllers/admin/new_dir/dashboard.php

我的控制器已正确放置并命名。有谁知道为什么会发生这种情况,或者控制器只能是控制器目录中的一个目录?

由于

2 个答案:

答案 0 :(得分:2)

不幸的是,Codeigniter中只能有一个级别的子目录。仅将第一个URI段检查为可能的目录。

你是否希望有一个额外的子目录以保持整洁,或者这是为了你的URI的好处?如果是后者,您可以使用路由模拟额外子目录的行为。

答案 1 :(得分:0)

是的,可以在应用程序/控制器中包含子文件夹。

  1. routes.php文件: $ route ['default_controller'] =“default_page”;

  2. 将* default_page.php *添加到每个子文件夹和控制器文件夹本身,而不是重定向到您需要用作该文件夹默认值的实际控制器,例如:

      

    class Default_Page扩展了Public_Controller {

        public function __construct()
        {
            parent::__construct();
            redirect(Settings_model::$db_config['home_page']);
        }
    }
    
  3. 副作用:您的自定义404处理程序 - 如果您有任何 - 将搞砸:子文件夹未被捕获并将抛出默认的error_404。我仍然在寻找一个合适的解决方案。

  4. 缺点:对于包含几乎相同代码的每个文件夹和子文件夹,您有类似的文件。假设您有一个包含许多文件夹的大型项目,这将很难维护(此时使用HMVC会更好)。我希望有人有一个更好的解决方案,但至少这是有效的。