【问题标题】:Redirect all 404 error pages to custom 404 page Codeigniter HMVC将所有 404 错误页面重定向到自定义 404 页面 Codeigniter HMVC
【发布时间】:2017-05-28 18:20:37
【问题描述】:

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

我设置了 `$route['404_override'] = 'home/notfound';

它适用于在主域之后找不到 url(例如 www.domain.com/uroetioosyerit)

但是如果我输入了一个类名然后是一个无效的 url(例如 www.domain.com/services/yersityijftnyutyum)它会显示默认的 codeigniter 404 内容

我正在使用带有 hmvc 建模器扩展 https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc 的 codigniter 3

【问题讨论】:

  • 所以 home 是一个控制器,没有找到一个功能?对吧?家在哪里?您需要将其从 hmvc 结构中取出,以提供“包罗万象”
  • 但是我想用我的模板模块来显示一个漂亮的 404 页面,那么我如何从一个普通的 codeigniter 控制器中调用一个“模块”呢?

标签: php codeigniter


【解决方案1】:

像这样设置一个路线,例如:

$route['404_override'] = 'errormanager/my404';

然后是一个控制器 errormanager,其功能如下:

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>

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

【讨论】:

  • 但我想使用我的页眉和页脚模板模块
  • 从控制器错误管理器加载它,只要确保在主 application\views 文件夹中也有 header.php 和 footer.php。查看我的编辑
【解决方案2】:

application/controlers 文件夹中创建类似 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');
  }

}

接下来,在application/config/routes.php文件中设置路由:

$route['404_override'] = 'my404';

现在,您在 application/view 文件夹中创建视图并添加以下代码:

<?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>

或者您可以从您的主题或模板进行自定义。

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 2012-10-01
    • 2011-01-19
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多