Выдаёт ошибку 404 при просмотре movies/rating. что делать?
Почему у меня выдает 404 ошибку, когда после /movies/rating ничего нет, но при /movies/rating/$1, где $1 - любое число, всё отображается и даже пагинация работает?
Это контроллер
public function rating() {
$this->load->library('pagination');
$offset = (int) $this->uri->segment(3);
$row_count = 10;
$count = 0;
$this->data['title'] = 'Рейтинг фильмов';
$count = count($this->films_model->getFilms(0, 1));
$p_config['base_url'] = '/movies/rating/';
$this->data['data_movies'] = $this->films_model->getMoviesOnPage($row_count, $offset, 1);
$p_config['total_rows'] = $count;
$p_config['per_page'] = $row_count;
$p_config['full_tag_open'] = "<ul class='pagination'>";
$p_config['full_tag_close'] ="</ul>";
$p_config['num_tag_open'] = '<li>';
$p_config['num_tag_close'] = '</li>';
$p_config['cur_tag_open'] = "<li class='disabled'><li class='active'><a href='#'>";
$p_config['cur_tag_close'] = "<span class='sr-only'></span></a></li>";
$p_config['next_tag_open'] = "<li>";
$p_config['next_tagl_close'] = "</li>";
$p_config['prev_tag_open'] = "<li>";
$p_config['prev_tagl_close'] = "</li>";
$p_config['first_tag_open'] = "<li>";
$p_config['first_tagl_close'] = "</li>";
$p_config['last_tag_open'] = "<li>";
$p_config['last_tagl_close'] = "</li>";
$this->pagination->initialize($p_config);
$this->data['pagination'] = $this->pagination->create_links();
$this->load->view('templates/header', $this->data);
$this->load->view('movies/rating', $this->data);
$this->load->view('templates/footer');
}
Роут
$route['movies/rating'] = 'movies/rating/$1';
Модель использовал готовую с урока.
Сама страница рейтинга находится в папке movies.
5 ответов
Можно попробовать слеш поставить в конце, если работает, значит apache как-то не так настроен.
Вот так попробуйте:
/movies/rating/
Здравствуйте! Я новичок. Также столкнулся с данной проблемой. Убил 2 вечера. Прямо разочарование какое-то. Вроде ещё неделю назад разобрался как работает связка MVC + указание (если необходимо) в routes.php. Даже себе для примера задачку придумал - всё решилось. И тут на тебе!
Оказалось всё в банальном порядке следования маршрутов. Потому что если в конец поставить
$route['movies/(:any)'] = 'movies/view/$1';
$route['movies/type/films'] = 'movies/type/films/$1';
$route['movies/type/serials'] = 'movies/type/serials/$1';
$route['movies/rating'] = 'movies/rating/$1';
то не работает. А если в начало
$route['movies/rating'] = 'movies/rating/$1';
$route['movies/(:any)'] = 'movies/view/$1';
$route['movies/type/films'] = 'movies/type/films/$1';
$route['movies/type/serials'] = 'movies/type/serials/$1';
то всё нормально. Дело, видимо, в хитром $route['movies/(:any)'] = 'movies/view/$1
Но тогда не понятно, почему корректно отрабатывается после него "type/films" и "type/serials"?
Всё, разобрался. Оказывается, что запись "(:any)"в $route['movies/(:any)'] означает "любой", но только второй сегмент URL.
Неа, не работает
Боже! Спасибо вам большое:D Всё так банально оказывается)