繁体   English   中英

如何使用 Codeigniter 在自定义 404 页面中重定向 404 错误?

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

先生们,我正在使用 Codeigniter 建立一个博客。 我可能需要一种将 404 错误重定向到自定义 404 页面的方法。 就像 Abduzeedo.com 的 404 页面一样。 是否可以通过使用路由来控制它? 或者我应该使用控制器将它定向到另一个视图? 非常感谢!

我使用另一种方法:通过覆盖 Codeigniter 的 Exception 核心类。 首先确保您的配置文件(system/application/config/config.php)子类前缀如下$config['subclass_prefix'] = 'MY_';

然后在 system/application/libraries 中创建一个名为 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 错误。

使用以下3 个步骤创建自定义404 页面

步骤1 :首先在application/config中打开routes.php并设置自定义控制器名称,

$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 ”的视图文件。

您不需要创建任何控制器或修改代码,而不是修改一个视图文件。 只需将您的 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');
?>

对于一个简单的解决方案,转到“application/errors/”目录中的“error_404.php”文件,并将此代码放在文件的开头:

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

它会将您的 404 页面重定向到主页。

简单的解决方案。

在视图中创建您的自定义错误或页面未找到页面。

为错误页面创建一个控制器。 在 index 函数中加载您在上一步中创建的错误页面的视图。

现在,转到您的application/config/routes.php

你应该找到$route['404_override'] = '';

它的''表示它调用默认错误页面。

现在为 error page 放置控制器名称。

它会起作用。

假设我的错误页面控制器是'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

好吧,当您的网站中找不到页面时,您想显示您的自定义 404 页面,您只需替换位于application/error/error_404.php核心文件上的自定义文件,只需在此处替换您的文件,您就可以去其他地方了按照其他方法使用routes和自定义控制器为您自定义404 page 但最短和最简单的方法是用自定义404error page文件替换核心文件

一个更简单的解决方案:
只需使用您的自定义 404 页面编辑/application/views/error_404.php :)

首先打开 application/config 文件夹中的 routes.php 并设置自定义控制器名称。

 $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 页面。

无需定义任何复杂性。 这个过程非常简单。 首先,转到您的 application->config->routes.php 文件并使用您的控制器函数更改它,您只需在其中加载页眉、页脚和 404.php 页面。

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

然后来到你的控制器页面

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

}

同样的问题也可以在这里找到在 CodeIgniter 中显示 404 错误的视图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM