Дубликат сайта в CodeIgniter

#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. Нет, я не имел в виду кавычки, но я не смог отредактировать комментарий после того, как заметил.