【问题标题】:404 error on controller within several directories,多个目录中的控制器出现 404 错误,
【发布时间】:2011-04-26 01:07:43
【问题描述】:

我正在使用 Codeigniter 2.0.1。例如,当我打电话时..

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

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

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

我的控制器已正确放置和命名。有谁知道为什么会这样,或者控制器只能是控制器目录深处的一个目录吗?

谢谢

【问题讨论】:

    标签: codeigniter-2


    【解决方案1】:

    不幸的是,您在 Codeigniter 中只能拥有一级子目录。只有第一个 URI 段被检查为可能的目录。

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

    【讨论】:

      【解决方案2】:

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

      1. routes.php: $route['default_controller'] = "default_page";

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

        类 Default_Page 扩展 Public_Controller {

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-06
        • 2020-03-13
        • 2019-02-20
        • 2014-11-20
        • 1970-01-01
        • 2017-06-16
        • 2015-11-04
        • 2013-03-14
        相关资源
        最近更新 更多