子文件夹 Codeigniter 中的自定义 404 页面

custom 404 page in subfolder Codeigniter

如何在子文件夹 Codeigniter 中创建自定义 404 页面? 我尝试了以下但无济于事:

http://tutsnare.com/create-custom-404-page-codeigniter/

有什么想法吗?谢谢

您的 route.php 配置中有 $route[‘404_override’] = ‘’;。 你可以设置一个像 page_error.php 这样的控制器并保持 URL 这样你就不会有重定向了。

$route['404_override'] = 'page_error'; 

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class page_error extends CI_Controller
{
 function index()
  {
    $this->output->set_status_header('404');
     echo '404';
   }
} 
?>

检查here路由

只需查看您的 application/routes.php 文件 $route['404_override'] = '';

先把上面的$route['404_override'] = '';改成$route['404_override'] = 'custom_error';

加油你application/controllers

创建名称为 custom_error 的新控制器

class Custom_error extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();



    }

    public function index()
    {
        echo "404 Rajaram Custom Message";
    }

}

您需要更多有关路线的详细信息,请访问官方网站
https://ellislab.com/codeigniter/user-guide/general/routing.html

您是否在子文件夹中使用控制器?如果是这样,请通过创建 application/core/MY_Exceptions.php

来扩展异常 class

输入以下代码:

class MY_Exceptions extends CI_Exceptions 
{

    public function __construct()
    {
        parent::__construct();
    }

    /**
     * 404 Page Not Found Handler
     *
     * @access  private
     * @param   string
     * @return  string
     */
    public function show_404($page = '', $log_error = TRUE)
    {

        /**
         * Quick fix for 404 Override bug.
         * 
         * index.php/non-existent-controller                        -----> override ok
         * index.php/existent-controller/non-existent-method        -----> override not ok
         * index.php/existent-folder/non-existent-controller        -----> override not ok
         */

        $router =& load_class('Router', 'core');
        if ( ! empty($router->routes['404_override']))
        {
            if ($log_error) log_message('error', '404 Page Not Found --> '. $page);

            $config =& load_class('Config', 'core');
            header('Location: '. $config->site_url($router->routes['404_override']));
            exit;
        }

        /* End of fix */

        $heading = "404 Page Not Found";
        $message = "The page you requested was not found.";

        // By default we log this, but allow a dev to skip it
        if ($log_error)
        {
            log_message('error', '404 Page Not Found --> '.$page);
        }

        echo $this->show_error($heading, $message, 'error_404', 404);
        exit;
    }
}