Php 如何使用Codeigniter重定向自定义404页面中的404错误?
好心的先生们,Php 如何使用Codeigniter重定向自定义404页面中的404错误?,php,codeigniter,Php,Codeigniter,好心的先生们, 我正在使用Codeigniter建立一个博客。我可能需要一种将404错误重定向到自定义404页面的方法。就像Abduzeedo.com的404页面一样。是否可以通过使用路由来控制这一点?或者我应该使用控制器将其指向另一个视图?非常感谢 我使用另一种方法:重写Codeigniter的异常核心类。首先确保您的配置文件(system/application/config/config.php)子类前缀如下 $config['subclass_prefix']='MY_' 然后在syst
我正在使用Codeigniter建立一个博客。我可能需要一种将404错误重定向到自定义404页面的方法。就像Abduzeedo.com的404页面一样。是否可以通过使用路由来控制这一点?或者我应该使用控制器将其指向另一个视图?非常感谢 我使用另一种方法:重写Codeigniter的异常核心类。首先确保您的配置文件(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错误。要获得简单的解决方案,请转到“application/errors/”目录中的“Error_404.php”文件,并将以下代码放在该文件的开头:
header("Location:".base_url());
它会将404页面重定向到主页。简单解决方案。
创建自定义错误或在视图中找不到页面
为错误页创建控制器。在index函数中,加载在上一步中创建的错误页面视图
现在,转到您的应用程序/config/routes.php
您应该找到$route['404\u override']=''代码>
它的“
表示调用默认错误页
现在将控制器名称放入错误页面
它会起作用的
假设我的错误页控制器是'error'
。而查看页面是“未找到”
因此,Error.php
控制器的代码将是:
<?php
class Error extends CI_Controller
{
function index()
{
$this->load->view('notfound');
}
}
自定义404页面是使用以下3个步骤创建的
步骤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页面,那么当在网站中找不到页面时,您只需在位于应用程序/error/error_404.php中的核心文件中替换自定义文件即可您可以通过使用路由
和自定义控制器(自定义404页面
)使用其他方法前往其他地方。但最短、最简单的方法是将核心文件替换为自定义404错误页
文件首先打开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页面。一个更简单的解决方案:
只需使用自定义404页面编辑/application/views/error_404.php
)无需创建任何控制器或修改代码,只需修改一个视图文件即可。只需将404页HTML放入应用程序/views/errors/HTML/error_404.php
文件
如果要使用base_url()或任何其他CodeIgniter函数,请按照以下代码初始化CI_控制器类
<?php
$ci = new CI_Controller();
$ci =& get_instance();
$ci->load->helper('url');
?>
无需定义任何复杂性。
这个过程非常简单。
首先,转到您的应用程序->配置->routes.php文件,并使用控制器的函数对此进行更改,您只需在其中加载页眉、页脚和404.php页面
$route['404_override'] = 'welcome/_404';
然后进入控制器页面
function _404(){
$this->load->view("header");
$this->load->view("404");
$this->load->view("footer");
}
这里也有同样的问题
这对我来说是最好的。我无法让404控制器工作,但这允许我访问我的模型和视图,并执行我需要的操作。谢谢。在CI 2.2中,您可以只编辑页面,但对于3.0,我们将按照您的定义(y)初始化CI_控制器