【问题标题】:Why are my MVC controllers showing 404?为什么我的 MVC 控制器显示 404?
【发布时间】:2015-12-23 09:23:59
【问题描述】:

我有一个 MVC 项目,我正尝试在新计算机上设置。我正在使用 MAMP 和 codeigniter。出于某种原因,当我尝试转到任何控制器时出现 404 错误。

但奇怪的是,在路由文件中定义的默认控制器似乎工作正常。

这是一个示例控制器:

class Test_controller extends CI_Controller {
    public function index(){
       echo 'hello';
    }
}

当我转到 localhost:8888/test_controller 时,我得到 404。

但是,将以下行添加到我的 routes.php...

$route['default_controller']="test_controller";

...然后导航到localhost:8888 似乎可以加载控制器。

【问题讨论】:

  • 你的控制器的第一个字母必须是大写的,即Test_controller
  • 你是对的。我现在已经改变了。但我仍然得到 404。
  • 试试 localhost:8888/index.php/test_controller
  • 在 localhost 之后,您必须提供您的项目名称,然后是控制器名称,如果是默认名称,则仅提供项目名称...。您的项目名称是 test_controller...??
  • 你没有.htaccess :)

标签: php codeigniter mamp


【解决方案1】:

您缺少.htaccess,默认情况下CI 需要/index.php/controller 才能工作,要删除index.php,您可以使用Codeigniter 提供的HTaccess 或这个:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^ index.php [L] 

将其放在名为“.htaccess”的应用程序文件夹之外

【讨论】:

  • 太棒了。这就是答案!谢谢。
  • 我从另一台机器上复制了我的项目,但是.htaccess 似乎没有复制,大概是因为它是一个隐藏文件。
【解决方案2】:

在区分大小写的 Codeigniter CI3 上。

确保文件名首字母大写

Test_controller.php

然后是控制器类

<?php

class Test_controller extends CI_Controller {

   public function index() {
      echo 'hello';
   }

}

如何使用控制器Link

Codeigniter 文档的Link

还要确保你的 base_url 已设置

$config['base_url'] = 'http://localhost/project/';

【讨论】:

  • 我正在设置 base_url 我认为:$config['base_url']='';
  • 你不需要设置base_url,它只是快速访问网站的URL。仍然建议填写,但不是必需的。
猜你喜欢
  • 2021-07-14
  • 1970-01-01
  • 2014-04-28
  • 2013-10-19
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2018-07-22
相关资源
最近更新 更多