簡體   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