php 如何使用 Codeigniter 在自定义 404 页面中重定向 404 错误?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2310061/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How can I redirect a 404 Error in a custom 404 page using Codeigniter?
提问by Chester Sabado
Kind sirs, I'm using Codeigniter to build a blog. I might need a way to redirect a 404 error into a custom 404 page. Just like what Abduzeedo.com's 404 page. Is it possible to control this by using routes? Or should i use controllers to direct it to another view? Thanks very much!
先生们,我正在使用 Codeigniter 建立一个博客。我可能需要一种将 404 错误重定向到自定义 404 页面的方法。就像 Abduzeedo.com 的 404 页面一样。是否可以通过使用路由来控制它?或者我应该使用控制器将它定向到另一个视图?非常感谢!
采纳答案by sumanchalki
there is another way which I use: by overriding Exception core class of Codeigniter. Firstly make sure your config file(system/application/config/config.php) subclass prefix is as following
$config['subclass_prefix'] = 'MY_';
我使用另一种方法:通过覆盖 Codeigniter 的 Exception 核心类。首先确保您的配置文件(system/application/config/config.php)子类前缀如下
$config['subclass_prefix'] = 'MY_';
Then make a file named MY_Exceptions.php in system/application/libraries. Then override the function show_404() function here as follows.
然后在 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;
}
}
Now Error controller will be your error page, where the page will be redirected for 404 error.
现在错误控制器将是你的错误页面,页面将被重定向到 404 错误。
回答by Vinod VT
Custom 404 pageis create by using the following 3 steps,
使用以下3 个步骤创建自定义404 页面,
Step 1: First open routes.php in application/config and set a custom controller name,
步骤 1:首先在 application/config 中打开 routes.php 并设置自定义控制器名称,
$route['404_override'] = 'my404'; //my404 is class name.
Step 2: Create a new controller and write the following code in it. The code is very easy to understand. So I am not going to explain it here,
步骤 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
}
}
?>
Step 3: Create a view file with name 'error_404.php' with your custom message.
第 3 步:使用您的自定义消息创建一个名为“ error_404.php”的视图文件。
回答by JoyGuru
You don't need to create any controller or modify the code, rather than modify one view file. Just placed your 404 page HTML into the application/views/errors/html/error_404.phpfile.
您不需要创建任何控制器或修改代码,而不是修改一个视图文件。只需将您的 404 页面 HTML 放入application/views/errors/html/error_404.php文件中。
If you want to use base_url() or any other CodeIgniter functions, initialize CI_Controller class like the below code.
如果要使用 base_url() 或任何其他 CodeIgniter 函数,请像下面的代码一样初始化 CI_Controller 类。
<?php
$ci = new CI_Controller();
$ci =& get_instance();
$ci->load->helper('url');
?>
回答by Sardar Younus
For a simple solution, go to your "error_404.php" file in "application/errors/" directory and put this code at the beginning of the file:
对于一个简单的解决方案,转到“application/errors/”目录中的“error_404.php”文件,并将此代码放在文件的开头:
header("Location:".base_url());
It'll redirect your 404 page to home page.
它会将您的 404 页面重定向到主页。
回答by Web Development
Simple Solution.
简单的解决方案。
Create your custom error or Page not found page within view.
在视图中创建您的自定义错误或页面未找到页面。
Create a controller for error page. Within index function load the view of error page that you already created in previous step.
为错误页面创建一个控制器。在 index 函数中加载您在上一步中创建的错误页面的视图。
Now, Go to your application/config/routes.php
现在,去你的 application/config/routes.php
you should find $route['404_override'] = '';
你应该找到 $route['404_override'] = '';
Its the ''mean its calling the default error page.
它的''意思是调用默认错误页面。
Now place your controller name for error page .
现在为 error page 放置控制器名称。
It will work.
它会起作用。
Suppose my Controller for error page is 'error'. and view page is 'notfound'.
假设我的错误页面控制器是'error'. 和查看页面是'notfound'。
So, code for Error.phpcontroller will be:
因此,Error.php控制器的代码将是:
<?php
class Error extends CI_Controller
{
function index()
{
$this->load->view('notfound');
}
}
Now, I replaced $route['404_override'] = '';to $route['404_override'] = 'error';in
application/config/routes.php.
现在,我替换 $route['404_override'] = '';为$route['404_override'] = 'error';in
application/config/routes.php。
回答by Aitazaz Khan
Well you want to show your custom 404page when page not found in your website you just replace your custom file on core file which is located in application/error/error_404.phpjust replace your file here and you are good to go else where you can follow other method by using routesand custom controller for you custom 404 page. But the shortest and easiest way is replacing the core file with custom 404error pagefile
好吧,当您的网站中找不到页面时,您想显示您的自定义 404 页面,您只需替换位于核心文件上的自定义文件,该文件位于application/error/error_404.php此处,只需在此处替换您的文件,您就可以去其他地方,您可以通过使用routes和自定义来遵循其他方法控制器为您定制404 page。但最短和最简单的方法是用自定义404error page文件替换核心文件
回答by Reza Fahmi
Very very very very more simple solution...
Just edit /application/views/error_404.phpwith your custom 404 page :)
非常非常非常简单的解决方案...
只需/application/views/error_404.php使用您的自定义 404 页面进行编辑:)
回答by Minu Alex
First open routes.php in the application/config folder and set a custom controller name.
首先打开 application/config 文件夹中的 routes.php 并设置自定义控制器名称。
$route['404_override'] = 'custom404'; //custom404 is class name.
Create a new controller and write the following code in it. The code is very easy to understand. So I am not going to explain it here.
创建一个新的控制器并在其中写入以下代码。代码非常容易理解。所以我不打算在这里解释。
<?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
}
}
?>
Create a view file with name 'error_404.php' with your custom message. That is all you need to do and will be having your custom 404 page now.
使用您的自定义消息创建一个名为“error_404.php”的视图文件。这就是您需要做的所有事情,现在将拥有您的自定义 404 页面。
回答by heySushil
No need to define any complexity. The process is very simple. First, go to your application->config->routes.php file and change this with your controller's function, where you simply load the header, footer, and 404.php page.
无需定义任何复杂性。这个过程非常简单。首先,转到您的 application->config->routes.php 文件并使用您的控制器函数更改它,您只需在其中加载页眉、页脚和 404.php 页面。
$route['404_override'] = 'welcome/_404';
Then come to your controller's page
然后来到你的控制器页面
function _404(){
$this->load->view("header");
$this->load->view("404");
$this->load->view("footer");
}
}
The same question is also available here Display a view for 404 error in CodeIgniter
同样的问题也可以在这里找到 在 CodeIgniter 中显示 404 错误的视图

