Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将所有404错误页面重定向到自定义404页面Codeigniter HMVC_Php_Codeigniter - Fatal编程技术网

Php 将所有404错误页面重定向到自定义404页面Codeigniter HMVC

Php 将所有404错误页面重定向到自定义404页面Codeigniter HMVC,php,codeigniter,Php,Codeigniter,我在我的主控制器中创建了一个自定义的404 not found方法 我已经设置了“$route['404_override']='home/notfound' 对于主域之后的未找到url(例如www.domain.com/uroetiuosyerit),它也能很好地工作 但是如果我输入一个类名,那么一个无效的url(例如www.domain.com/services/yersityijftnyutum)将显示默认的codeigniter 404内容 我将codigniter 3与hmvcmode

我在我的主控制器中创建了一个自定义的404 not found方法

我已经设置了“$route['404_override']='home/notfound'

对于主域之后的未找到url(例如www.domain.com/uroetiuosyerit),它也能很好地工作

但是如果我输入一个类名,那么一个无效的url(例如www.domain.com/services/yersityijftnyutum)将显示默认的codeigniter 404内容


我将codigniter 3与
hmvc
modeler扩展一起使用

设置一条路线,例如:

$route['404_override'] = 'errormanager/my404';
然后是一个控制器
错误管理器
,其功能如下:

public function my404(){

    $data['menu']=$this->Sitemanager->get_menu();

    $this->load->view('header',$data);
    $this->load->view('custom404');
    $this->load->view('footer');    
}
还有一个视图
custom404.php
如下:

<div class="my404"> 404 this page does not exist</div>
404此页面不存在

当您使用HMVC方法时,请确保控制器
errormanager
和视图可以从任何地方访问,这意味着您需要在Codeigniter controller+视图文件夹(application\views和application\controller)中找到它而不是在扩展模块HMVC结构中

应用程序/控制器文件夹中创建类似My404的控制器,并添加以下代码:

<?php defined ('BASEPATH') or exit ('No direct script acces allowed');

class My404 extends CI_Controler {

  public function __construct()
  {
  parent::__construct();
  }

  public function index()
  {
  $this->output->set_status_header('404');
  $this->load->view('err404');
  }

}
<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
<?php
$ci = new CI_Controller();
$ci =& get_instance();
$ci->load->helper('url');
?>
<!DOCTYPE html>
<html lang="en">
  <head>
   <meta charset="utf-8">
   <title>404 Page</title>
  </head>
<body>
 <div>
  <p>How to Create Custom Codeigniter 404 Error Pages </p>
   <div>
    <p><a href="<?php echo base_url(); ?>">Go Back to Home</a></p>
  </div>
 </div>
</body>
</html>
现在,您可以在应用程序/view文件夹中创建视图,并添加以下代码:

<?php defined ('BASEPATH') or exit ('No direct script acces allowed');

class My404 extends CI_Controler {

  public function __construct()
  {
  parent::__construct();
  }

  public function index()
  {
  $this->output->set_status_header('404');
  $this->load->view('err404');
  }

}
<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
<?php
$ci = new CI_Controller();
$ci =& get_instance();
$ci->load->helper('url');
?>
<!DOCTYPE html>
<html lang="en">
  <head>
   <meta charset="utf-8">
   <title>404 Page</title>
  </head>
<body>
 <div>
  <p>How to Create Custom Codeigniter 404 Error Pages </p>
   <div>
    <p><a href="<?php echo base_url(); ?>">Go Back to Home</a></p>
  </div>
 </div>
</body>
</html>

404页
如何创建自定义Codeigniter 404错误页面


或者您可以根据主题或模板进行自定义。

所以home是一个控制器,而不是一个函数?对吗?家在哪里?你需要把它从hmvc结构中去掉,提供一个“一网打尽”的功能,但是我想用我的模板模块来显示一个风格不错的404页面,那么我如何从普通的codeigniter控制器中调用一个“模块”呢?但是我想用我的页眉和页脚模板模块从控制器errormanager中加载它,只需确保在主application\views文件夹中也有header.php和footer.php。查看我的编辑