Добрые господа, я использую Codeigniter для создания блога. Мне может понадобиться способ перенаправления ошибки 404 на пользовательскую страницу 404. Так же, как страница 404 Abduzeedo.com. Можно ли управлять этим путем использования маршрутов? Или я должен использовать контроллеры, чтобы направить его на другое представление? Огромное спасибо!
есть другой способ, которым я пользуюсь: путем переопределения основного класса Exception Codeigniter. Во-первых, убедитесь, что префикс подкласса вашего конфигурационного файла (system / application / config / config.php) выглядит следующим образом: $config['subclass_prefix'] = 'MY_';
Затем создайте файл с именем MY_Exceptions.php в системе / приложении / библиотеках. Затем переопределите функцию show_404 () здесь следующим образом.
class MY_Exceptions extends CI_Exceptions{ function MY_Exceptions(){ parent::CI_Exceptions(); } function show_404($page=''){ $this->config =& get_config(); $base_url = $this->config['base_url']; $_SESSION['error_message'] = 'Error message'; header("location: ".$base_url.'error.html'); exit; } }
Теперь контроллер ошибок будет вашей страницей ошибок, где страница будет перенаправлена на ошибку 404.
Пользовательская страница 404 создается с использованием следующих 3 шагов ,
Шаг 1. Сначала откройте route.php в приложении / config и задайте имя пользовательского контроллера,
$route['404_override'] = 'my404'; //my404 is class name.
Шаг 2. Создайте новый контроллер и напишите в нем следующий код. Код очень легко понять. Поэтому я не собираюсь объяснять это здесь,
<?php class my404 extends CI_Controller { public function __construct() { parent::__construct(); } public function index() { $this->output->set_status_header('404'); $data['content'] = 'error_404'; // View name $this->load->view('index',$data);//loading in my template } } ?>
Шаг 3. Создайте файл вида с именем « error_404.php » с вашим пользовательским сообщением.
Простое решение.
Создайте свою собственную страницу ошибки или страницы, не найденную в окне просмотра.
Создайте контроллер для страницы с ошибкой. Внутри функции индекса загрузите представление страницы ошибки, которое вы уже создали на предыдущем шаге.
Теперь перейдите к вашему application/config/routes.php
вы должны найти $route['404_override'] = '';
Его значение означает, что он вызывает страницу ошибок по умолчанию.
Теперь разместите свое имя контроллера для страницы с ошибкой.
Это будет работать.
Предположим, что мой контролер для страницы с ошибкой – 'error'
. и страница просмотра 'notfound'
.
Итак, код для контроллера Error.php
будет:
<?php class Error extends CI_Controller { function index() { $this->load->view('notfound'); } }
Теперь я заменил $route['404_override'] = '';
to $route['404_override'] = 'error';
в application/config/routes.php
.
Вам не нужно создавать какой-либо контроллер или изменять код, а не изменять один файл вида. Просто разместил ваш 404-страничный HTML-файл в файле application/views/errors/html/error_404.php
.
Если вы хотите использовать base_url () или любые другие функции CodeIgniter, инициализируйте класс CI_Controller, как приведенный ниже код.
<?php $ci = new CI_Controller(); $ci =& get_instance(); $ci->load->helper('url'); ?>
Ну, вы хотите показать свою собственную страницу 404 страницы, если страница не найдена на вашем веб-сайте, вы просто замените свой файл в основном файле, который находится в application/error/error_404.php
просто замените свой файл здесь, и вам хорошо идти дальше, где вы можете следуйте другим методам, используя routes
и пользовательский контроллер для вашей пользовательской 404 page
. Но самым коротким и простым способом является замена основного файла на пользовательский 404error page
Очень очень очень простое решение …
Просто отредактируйте /application/views/error_404.php
со своей страницей 404 🙂
Для простого решения перейдите в файл «error_404.php» в каталоге «application / errors /» и поместите этот код в начало файла:
header("Location:".base_url());
Он перенаправит вашу страницу 404 на домашнюю страницу.
Сначала откройте route.php в папке application / config и установите собственное имя контроллера.
$route['404_override'] = 'custom404'; //custom404 is class name.
Создайте новый контроллер и напишите в нем следующий код. Код очень легко понять. Поэтому я не собираюсь объяснять это здесь.
<?php class custom404 extends CI_Controller { public function __construct() { parent::__construct(); } public function index() { $this->output->set_status_header('404'); $data['content'] = 'error_404'; // View name $this->load->view('index',$data);//loading in my template } } ?>
Создайте файл с именем «error_404.php» с вашим пользовательским сообщением. Это все, что вам нужно сделать, и теперь вы будете иметь свою страницу 404.