【问题标题】:Codeigniter controller not found未找到 Codeigniter 控制器
【发布时间】:2016-05-09 11:34:34
【问题描述】:

我在 codeigniter 中创建了一个控制器。问题是当我在 url 中点击控制器名称和函数名称时,它给了我找不到 404 的错误。我是 codeigniter 的新手,我不明白我哪里出错了

这是我的控制器

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

class Home extends CI_Controller{

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

function you(){
$this->load->view('home_view');
}

}
?>

而我的看法是这样的

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>My First CodeIgniter Practice</title>
 </head>
 <body>
 <h1> HELLO CI Buddy...!</h1>
 </body>
 </html>

我在 codeigniter 上创建了我的第一个项目,但我遇到了这个问题。我已经尝试了 stackoverflow 中的大部分解决方案,然后我问了这个问题。所以我要求不要将此问题添加到重复中。我想要解决我的问题。任何帮助都是可观的

谢谢

【问题讨论】:

  • 你在地址栏写了什么网址?
  • @ManinderpreetSingh 感谢您的回复,但这些都不起作用
  • @Hassaan 我正在使用这个网址 localhost/w3crud/Home/index
  • 您的视图文件是否位于/application/views/home_view.php
  • 你没有index功能,所以使用这个url:localhost/w3crud/index.php/home/you

标签: php codeigniter


【解决方案1】:

我认为 .htaccess 文件可能有问题。您的主项目目录中是否有 .htaccess 文件,并且是这样写的吗?如果不这样做..

 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.+)$ index.php/$1 [L]

【讨论】:

  • 不敢相信我会在我的安装中错过它。
【解决方案2】:

您的问题可能是由于以下任一原因

  • 控制器文件名的第一个字母应为大写字母,即 Home.php 。
  • 请检查您的主页文件名
  • 使用 URL localhost/w3crud/index.php/home/you 如果问题出在您的网址中,请编辑您的 .htaccess 文件

【讨论】:

    【解决方案3】:

    您是否在实时服务器上运行您的项目?如果是,请确保控制器的文件名以大写字母开头。这似乎是一个愚蠢的答案,但请注意,我自己花了五个多小时试图解决同样的问题。

    【讨论】:

      【解决方案4】:

      在考虑这个问题时,我想知道这可能会发生在像我这样的初学者身上 假设我们有一个名为 codeigniter 的文件夹中的项目。因此,当输入 url 时,我们输入类似 localhost/codeigniter/ 的内容,它会显示欢迎消息。但它会自动添加 index.php 在 config.php (第 38 行)中定义的 url 之后像这样 @987654322 @。因此,如果您没有在 .htaccess 文件中写入 mod_rewrite,请不要担心,试试这个 url

      localhost/codeigniter/index.php/home/you

      在你的情况下,home.php 是控制器文件,you 是这里的方法

      【讨论】:

        【解决方案5】:

        请尝试以下

        a) 在控制器中创建成员函数 index() 并检查

        b) 你正在检查哪个网址?

        b.1) http://localhost/yourproject/index.php/home/you

        (localhot: 是你的服务器 url, yourproject: 你的项目文件夹, home = 你的控制器文件即 Home.php and you: 你的成员函数。

        【讨论】:

        【解决方案6】:

        尝试如下

        <?php
        if(!defined('BASEPATH')) exit('No direct script access allowed');
        
        class Home extends CI_Controller{
        
           public function __construct(){
              parent::__construct();
            }
        
            public function index(){
              $this->load->view('home_view');
            }
        
        }
        ?>
        

        并确保您的home_view.php 文件与您的代码一起存在于application/views 目录中。现在您可以运行 URL http://localhost/w3crud/home/index 来查看所需的输出

        【讨论】:

          【解决方案7】:

          发生这种情况的原因有很多。就我而言,原因是在命名控制器时使用下划线,例如My_Custom_Controller

          routes.php(有问题)

          $route['translate_uri_dashes'] = FALSE;
          
          $route['my-custom-path'] = 'my_Custom_Controller/landing';
          

          所以,我能够通过将控制器重命名为 Mycustomcontroller 来修复它,那是它唯一起作用的时候。

          routes.php(功能)

          $route['translate_uri_dashes'] = FALSE;
          
          $route['my-custom-path'] = 'mycustomcontroller/landing';
          

          命名不遵循 CodeIgniter 建议的命名约定,但它确实为我解决了这个问题。

          【讨论】:

            【解决方案8】:

            如果您的 CI 位于子文件夹中,例如 c:/xampp/htdocs/somemap/ci 将您的 .htaccess 更改为

            <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
            RewriteBase /ci/
            RewriteRule ^index\.php$ - [L]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . /ci/index.php [L]
            </IfModule>
            

            请注意 /ci/

            【讨论】:

              猜你喜欢
              • 2016-10-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-04-18
              • 1970-01-01
              • 2022-08-13
              • 2013-10-04
              • 1970-01-01
              相关资源
              最近更新 更多