Выдаёт ошибку 404 при просмотре movies/rating. что делать?

0

Почему у меня выдает 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.

codeigniter

5 ответов

0

Можно попробовать слеш поставить в конце, если работает, значит apache как-то не так настроен.

Вот так попробуйте:

/movies/rating/
2

Здравствуйте! Я новичок. Также столкнулся с данной проблемой. Убил 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"?

2

Всё, разобрался. Оказывается, что запись "(:any)"в $route['movies/(:any)'] означает "любой", но только второй сегмент URL.

0

Неа, не работает

0

Боже! Спасибо вам большое:D Всё так банально оказывается)

Sign up or Log in to write an answer