Подтвердить что ты не робот

Как я могу перенаправить ошибку 404 на пользовательскую страницу 404 с помощью Codeigniter?

Добрые господа, Я использую Codeigniter для создания блога. Мне может понадобиться способ перенаправления ошибки 404 на пользовательскую страницу 404. Точно так же, как на странице Abduzeedo.com 404. Можно ли управлять этим путем использования маршрутов? Или я должен использовать контроллеры, чтобы направить его на другое представление? Большое спасибо!

4b9b3361

Ответ 1

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

Ответ 2

Пользовательская 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" с вашим пользовательским сообщением.

Ответ 3

Простое решение.

Создайте свою собственную страницу ошибки или страницы, не найденную в окне просмотра.

Создайте контроллер для страницы с ошибкой. Внутри функции индекса загрузите представление страницы ошибки, которое вы уже создали на предыдущем шаге.

Теперь перейдите к 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'] = ''; на $route['404_override'] = 'error'; в application/config/routes.php.

Ответ 4

Вам не нужно создавать какой-либо контроллер или изменять код, а не изменять один файл вида. Просто разместил ваш 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');
?>

Ответ 5

Ну, вы хотите показать свою собственную страницу 404 страницы, если страница не найдена на вашем сайте, вы просто замените свой файл в главном файле, который находится в application/error/error_404.php, просто замените ваш файл здесь, и вам хорошо идти дальше, где вы можете следовать другой метод, используя routes и настраиваемый контроллер для пользовательских 404 page. Но самый короткий и самый простой способ - заменить основной файл пользовательским 404error page файлом

Ответ 6

Очень очень очень простое решение...
Просто отредактируйте /application/views/error_404.php с помощью своей страницы 404:)

Ответ 7

Для простого решения перейдите в файл "error_404.php" в каталоге "application/errors/" и поместите этот код в начало файла:

header("Location:".base_url());

Он перенаправит вашу страницу 404 на домашнюю страницу.

Ответ 8

Сначала откройте 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.