How can I redirect a 404 Error in a custom 404 page using Codeigniter?

前端 未结 9 2042
抹茶落季
抹茶落季 2020-12-03 03:22

Kind sirs, I\'m using Codeigniter to build a blog. I might need a way to redirect a 404 error into a custom 404 page. Just like what Abduzeedo.com\'s 404 page. Is it possibl

相关标签:
9条回答
  • 2020-12-03 03:29

    First open routes.php in the application/config folder and set a custom controller name.

     $route['404_override'] = 'custom404'; //custom404 is class name. 
    

    Create a new controller and write the following code in it. The code is very easy to understand. So I am not going to explain it here.

    <?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 
    } 
     } 
     ?> 
    

    Create a view file with name 'error_404.php' with your custom message. That is all you need to do and will be having your custom 404 page now.

    0 讨论(0)
  • 2020-12-03 03:33

    there is another way which I use: by overriding Exception core class of Codeigniter. Firstly make sure your config file(system/application/config/config.php) subclass prefix is as following $config['subclass_prefix'] = 'MY_';

    Then make a file named MY_Exceptions.php in system/application/libraries. Then override the function show_404() function here as follows.

    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;
        }
    }
    

    Now Error controller will be your error page, where the page will be redirected for 404 error.

    0 讨论(0)
  • 2020-12-03 03:36

    Custom 404 page is create by using the following 3 steps,

    Step 1: First open routes.php in application/config and set a custom controller name,

    $route['404_override'] = 'my404'; //my404 is class name. 
    

    Step 2: Create a new controller and write the following code in it. The code is very easy to understand. So I am not going to explain it here,

        <?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 
        } 
        } 
        ?>
    

    Step 3: Create a view file with name 'error_404.php' with your custom message.

    0 讨论(0)
  • 2020-12-03 03:39

    No need to define any complexity. The process is very simple. First, go to your application->config->routes.php file and change this with your controller's function, where you simply load the header, footer, and 404.php page.

    $route['404_override'] = 'welcome/_404';
    

    Then come to your controller's page

    function _404(){
    $this->load->view("header");
    $this->load->view("404");
    $this->load->view("footer");
    

    }

    The same question is also available here Display a view for 404 error in CodeIgniter

    0 讨论(0)
  • 2020-12-03 03:40

    For a simple solution, go to your "error_404.php" file in "application/errors/" directory and put this code at the beginning of the file:

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

    It'll redirect your 404 page to home page.

    0 讨论(0)
  • 2020-12-03 03:42

    Very very very very more simple solution...
    Just edit /application/views/error_404.php with your custom 404 page :)

    0 讨论(0)
提交回复
热议问题