【问题标题】:CodeIgniter controller model 404 errorCodeIgniter 控制器型号 404 错误
【发布时间】:2015-11-10 15:56:55
【问题描述】:

我的 CodeIgniter 网站出现 404 错误,我查看了其他答案并使用 .htaccess,但尚未解决。它位于我的 domain.co.uk/admin

控制器 -

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

class Projects extends CI_Controller {

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

public function index() {
    $this->load->model('project');
    $data['projects']=$this->project->get_projects();
    echo"<pre>";print_r($data['projects']);echo"</pre>";
}
}

型号 -

<?php

class Project extends CI_Model{

function get_projects($num=10,$start=0){
    $this->$db->select()->from('projects')->where('active',1)->order_by('date_added','desc')->limit($num,$start);
    $query=$this->db->get();
    return $query->result_array();
}
}

我也添加了这些路线 -

$route['default_controller'] = 'projects';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

目前在我的域/管理文件夹中有这个 .htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

谁能明白为什么我可能会收到 404 错误

【问题讨论】:

  • 你的文件名是Projects.php还是projects.php
  • 它在 domain.co.uk/index.php/admin 上工作吗?
  • 它在“projects.php”上是一个小写的 p,不,它不适用于任何我已经厌倦了一些的路径

标签: php .htaccess codeigniter


【解决方案1】:

如果您使用的是 codeigniter 3.0,则更新您的 MODEL 和 CONTROLLER 以大写字母开头,并且不要为模型和控制器提供与上述代码中相同的名称。 例如:

class Projects extends CI_Controller {
   //code comes here
}

在这个项目中,名称绝对没问题,但请注意您的文件名也应该以大写字母开头,即 Project.php 另一个模型:

class Projects_model extends CI_Model {
       //code comes here
    }

这是正确使用 codeigniter 的方法,而且我已经告诉过你,MODEL 和 CONTROLLER 文件名必须以大写字母开头。

谢谢..希望对你有帮助

【讨论】:

    【解决方案2】:

    在 codeigniter 3 上,在模型、控制器和库上,您应该始终将类和文件名的第一个字母大写。

    我还将项目模型重命名为 Model_project.php,因为如果名称相同,codeigniter 可能会混淆。

    模型Model_project.php

    class Model_project extends CI_Model {
    
    }
    

    控制器Project.php

    class Project extends CI_Controller {
        public function __construct() {
           parent::__construct();
           $this->load->model('model_project');
        }
    }
    

    您可能需要设置路线

    http://www.codeigniter.com/user_guide/general/routing.html

    【讨论】:

      【解决方案3】:

      你的$route['default_controller'] 变量有什么? (应该在 \application\config 中定义)。

      如果您有$route['default_controller'] = "Projects",则您的索引网址应为domain/admin/index.php/projectsdomain/admin/projects*

      *您可以使用带有一些简单规则的 .htaccess 文件轻松删除此文件。以下是此类文件的示例,使用“否定”方法,其中除了指定项目之外的所有内容都被重定向:

      RewriteEngine on
      RewriteCond $1 !^(index\.php|images|robots\.txt)
      RewriteRule ^(.*)$ /index.php/$1 [L]
      
      $config['index_page'] = '';
      

      【讨论】:

        猜你喜欢
        • 2019-01-05
        • 2014-06-03
        • 2013-08-14
        • 2013-12-11
        • 1970-01-01
        • 2013-03-14
        • 2020-11-28
        • 1970-01-01
        • 2011-11-29
        相关资源
        最近更新 更多