【问题标题】:Error 404: Page not found in codeigniter when controller is in subfolder错误 404:当控制器位于子文件夹中时,在 codeigniter 中找不到页面
【发布时间】:2014-03-17 19:24:21
【问题描述】:

我的 CI 项目中的一些控制器无法正常工作。以下是目录结构:

controllers/student/profile/personal.php

当我使用 URL 调用它时:localhost/school/student/profile/personal 然后它显示 404 错误。

personal.php文件内容:

class Personal extends CI_Controller {

    public function index() {
        echo "The is Personal Section";
    }
}

.htaccess 文件的内容是:

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA,PT] 

我不知道为什么它不起作用。还有其他控制器,如 controllers/student/login.php 工作正常。

有什么想法吗?

【问题讨论】:

  • 如果你称它为 personal 而不是 Personal class personal extends CI_Controller {
  • @CodeBird 还是不行?
  • 您的控制器文件夹没有school 子文件夹,但您的网址有
  • 是的,在 URL 中添加了school,好眼睛@MonkeyZeus
  • @CodeBird 谢谢!另外,我对编写 .htaccess 规则不太熟悉,因此 OP 可能会在其中解释这一事实,但我无法识别任何可以弥补我观察的东西

标签: php codeigniter controller


【解决方案1】:

我不相信 CodeIgniter 默认允许将控制器组织到子文件夹中。子文件夹是的......比这更深,你会遇到问题。有一些解决方案(更好或更坏)允许此功能。快速的 Google 搜索会出现这种情况:

https://degreesofzero.com/article/controllers-in-sub-sub-folders-in-codeigniter.html

还有这个:

http://ellislab.com/forums/viewthread/190563/

【讨论】:

  • 创建一个 MY_Router 类可以解决这个问题。谢谢
【解决方案2】:

版本 3 之前的 Codeigniter 模型和控制器以小型大写字母命名,文件中的类名以大写首字母命名 例如如果它是类 goat 文件应该是 goat.php

Codeigniter 3 模型和控制器的命名方式与使用文件调用它们的方式相同 例如,如果它是 goat 类,则文件应为 Goat.php

根据您的 codeigniter 版本,在任何一种情况下都不这样做...将导致未找到错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    相关资源
    最近更新 更多