代码之家  ›  专栏  ›  技术社区  ›  Rakesh Prajapat

现场服务器上的Codeigniter中未显示自定义404

  •  0
  • Rakesh Prajapat  · 技术社区  · 7 年前

    这是我的视图文件错误404。php

    <!DOCTYPE html>
        <html lang="en">
        <head>
        <meta charset="utf-8">
        <title>404 Page Not Found</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
        <style type="text/css">
          body
          {
            padding: 0px;
            margin:0px;
          }
    
          h1
          {
            padding: 0px;
            margin: 0px;
            font-size: 15px;
            text-align: center;
            font-weight: 600;
            font-family: sans-serif;
            color: #003a99;
          }
    
          #container
          {
            width: 100%;
            background-position: top center;
            background-repeat: no-repeat;
            background-attachment: local;
            background-size: cover;
          }
    
          .web
          {
            padding-top: 10px;
            padding-bottom: 85px;
          }
    
          span
          {
            color:#333;
          }
    
          .heading
          {
            color:#333;
          }
        </style>
        </head>
        <body>
            <div id="container" class="img-responsive" style="assets/images/background-image:url(404-Page-Not-Found2.jpg);">
            <img src="assets/images/404-page.png" class="img-responsive"/>
            <h1 class="heading">The page you’re looking for went fishing!</h1>
            <h1 class="web">Go back to <a href="<?php echo base_url();?>"><span>www.vpacknmove.in</span></a><h1>
            </div>
        </body>
        </html>
    

    这是我的控制器文件My404。php

    <?php
    class My404 extends CI_Controller
    {
        public function __construct()
        {
            parent::__construct();
        }
    
        public function index()
        {
            $this->output->set_status_header('404');
            $this->load->view('error_404');//loading in my template
        }
    }
    ?>
    

    还有我的路线

    $route['404_override'] = 'My404';
    $route['default_controller']      = 'Home';
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Brian Gottier    7 年前

    尝试将路由中的控制器名称小写:

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

    如果这不能解决你的问题,请报告。

    关于在没有匹配路由的情况下需要自定义生成的404时该怎么办,我创建了一个文件/应用程序/核心/我的U异常。php:

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class MY_Exceptions extends CI_Exceptions {
    
        /**
         * Class constructor
         */
        public function __construct()
        {
            parent::__construct();
        }
    
        // --------------------------------------------------------------------
    
        /**
         * 404 Error Handler
         * -----------------
         * This method has been extended so that if we use the show_404
         * function, that it is a styled/custom 404 page that is shown.
         */
        public function show_404( $page = '', $log_error = TRUE )
        {
            if( is_cli() )
            {
                $heading = 'Not Found';
                $message = 'The controller/method pair you requested was not found.';
            }
            else
            {
                $heading = '404 Error - Page Not Found';
                $message = 'The page or resource you were looking for was not found on this server.';
            }
    
            // By default we log this, but allow a dev to skip it
            if( $log_error )
            {
                log_message('error', $heading . ': ' . $page );
            }
    
            if( is_cli() )
            {
                echo $this->show_error($heading, $message, 'error_404', 404);   
            }
            else
            {
                $CI = &get_instance();
    
                $CI->output->set_status_header('404');
    
                $view_data = [
                    'heading' => $heading,
                    'message' => $message
                ];
    
                $data = [
                    'doc_title' => ['pre' => '404 Error - Page Not Found - '],
                    'extra_head' => '<meta name="robots" content="noindex,nofollow" />',
                    'content' => $CI->load->view( 'errors/html/error_404', $view_data, TRUE )
                ];
    
                $CI->load->view('templates/main', $data);
    
                echo $CI->output->get_output();
            }
    
            exit(4); // EXIT_UNKNOWN_FILE
        }
    
        // --------------------------------------------------------------------
    
    }
    

    注意,按照我的方式,我将error\u 404视图嵌套在我创建的模板中。我就是这样做的。当你在应用程序(通常是你的控制器)中创建页面时,你会用你使用的东西来替换这个部分。