#codeigniter #url-routing #codeigniter-2 #codeigniter-url #codeigniter-routing
#codeigniter #url-маршрутизация #codeigniter-2 #codeigniter-url #codeigniter-маршрутизация
Вопрос:
У меня вопрос, как показать ошибку 404, если страница не существует.Например, если у меня есть bloc.com и я добавляю в конце ссылки bloc.com/?id=45 он перенаправляет на домашнюю страницу, но страница не существует. В CodeIgniter существует конфигурация :
$config['enable_query_strings'] = TRUE;
Если я изменю значение на FALSE, это приведет к ошибкам в тегах utm, как показать 404, если страница bloc.com/?=45 но отлично работает с utm-тегами.Пожалуйста, помогите мне.
function show($id = 0)
{
$date= $this->model->get_date($id);
if($date)
{
....
}
else
{
show_404();
}
}
Я отредактировал свой вопрос.
Комментарии:
1. в вашем главном контроллере у вас будет проверка правильности идентификатора и данных для заполнения вашей страницы, если это не так, то
show_404();
2. Vinod VT, если я добавлю в конце ссылки?id = 454, это перенаправит меня на домашнюю страницу
3. есть ли у вас какое-либо правило, написанное в вашем routes.php файл, который может привести вас к этой проблеме? На самом деле, вам не нужно писать show($id), если вы отправляете параметры как get var
Ответ №1:
Разве это не сработает?
public function show()
{
if (isset($_GET['id']) )
{
if ( $check = $this->model->get_date($_GET['id']) )
{
......
}
else
{
echo 'show_404()';
}
}
else
{
echo 'no ID set';
}
}
Комментарии:
1. Вы не просто скопировали и вставили, не так ли? Я поместил это в свою локальную установку CI, и я мог бы посетить » localhost / tests/index.php/blog/ show /?id= 1 «, и это сработало бы
2. Нет, я не имел в виду кавычки, но я не смог отредактировать комментарий после того, как заметил.