Codeigniter 3.0.0 – ошибка 404 страница не найдена

Это моя первая php-структура. У меня есть php-файл в моем контроллере, который является post.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

При использовании codeigniter 3

Все контроллеры и модели должны иметь первую букву имени класса и имени файла в качестве примера верхнего примера Welcome.php и не welcome.php

Для вашей модели, потому что это то же имя, что и контроллер. Я бы сменил название модели на Model_post

Имя файла: Model_post.php

 <?php class Model_post extends CI_Model { public function some_function() { } } 

Таким образом, не будет запутанным.

Post Controller будет

Имя файла: 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 и выше.

Добавьте маршрут, как …

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

В моем случае это решило вопрос:

Перейдите в config / routes.php и определите контроллер по умолчанию в строке 52;

Если вам нужна другая функция вместо индекса, я бы назвал эту функцию функцией индекса. Но это на вас.