![](/img/trans.png)
[英]Redirect all 404 error pages to custom 404 page Codeigniter HMVC
[英]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.