codeigniter 404页面未找到

chhqkbe1  于 2023-04-03  发布在  其他
关注(0)|答案(4)|浏览(106)

这是我的第一个php框架,我在控制器中有一个php文件posts.php,但当我试图运行它localhost/codeigniter/index.php/posts时,它显示错误404。
应用程序文件夹内的.htaccess

<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>

autoload.php

$autoload['libraries'] = array('database');
$autoload['helper'] = array('url');

config.php

$config['base_url'] = 'http://localhost/codeigniter/';
$config['index_page'] = 'index.php';

routes.php

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

模型文件夹中的post.php

class Post extends CI_Model{

    function get_posts($num = 20, $start = 0){

        //$sql = "SELECT * FROM users WHERE active=1 ORDER BY date_added DESC LIMIT 0,20;";
        $this->db->select()->from('posts')->where('active', 1)->order_by('date_added', 'desc')->limit(0, 20);
        $query=$this->db->get();
        return $query->result_array();

    }

}

控制器文件夹中的posts.php

class Posts extends CI_Controller{

    function index(){

        $this->load->model('post');
        $data['posts'] = $this->post->get_posts();
        echo "<pre>";
            print_r($data['posts']);
        echo "</pre>";      

    }

}

它应该显示一个空数组,但它显示错误404代替

2wnc66cl

2wnc66cl1#

使用codeigniter 3时
所有控制器和模型都应该有类名和文件名的首字母作为大写示例Welcome.php而不是welcome.php
因为它与控制器同名。我会将模型名称更改为Model_post

文件名:Model_post.php

<?php

class Model_post extends CI_Model {

    public function some_function() {

    }

}

这样codeigniter就不会混淆了。
邮政管理员是

文件名:Post.php

<?php

class Post extends CI_Controller {

    public function __construct() {
       parent::__construct();
       $this->load->model('model_post');
    }

   public function index() {
      $this->model_post->some_function();
   }

}

同样在你的url中,如果没有设置codeigniter / htaccess来删除index.php,那么你的url将需要在每个地方使用index.php。

http://localhost/project/index.php/post

http://www.example.com/index.php/post

注意:如果你需要htaccess,请不要触摸应用程序文件夹中的htaccess,在主目录Htaccess For Codeigniter中添加一个。
在codeigniter v3之前的版本中,你不需要为控制器担心ucfirst,但现在你需要为版本3和更高版本担心。

vlju58qv

vlju58qv2#

添加一条路线,如...

$route['posts'] = 'posts/index';
hrysbysz

hrysbysz3#

在我的案例中,这解决了问题:
转到config/routes.php并在第52行定义默认控制器;
如果你需要另一个函数来代替index,我会从index函数调用那个函数。

gwo2fgha

gwo2fgha4#

除了路由配置不正确之外,还有一种可能性。
我注意到一个类似的问题,当你的控制器名称看起来像这样:“ControllerName"。
要解决这个问题,你只需要像这样重命名你的控制器:“* 控制器名称 *”

相关问题