2010-02-22 41 views

回答

16

还有另一种方法,我使用:通过重写异常核心类的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错误。

0

对于一个简单的解决方案,去你的“error_404.php”文件中的“应用程序/错误/”目录,并把这个代码在文件的开头:

header("Location:".base_url()); 

它会重定向你的404页面到主页。

2

简单的解决方案。

在视图内创建自定义错误或页面未找到页面。

创建错误页面的控制器。在索引函数内载入您在上一步中创建的错误页面的视图。

现在,转到您的application/config/routes.php

你应该找到$route['404_override'] = '';

''意味着其调用默认的错误页面。

现在将您的控制器名称放入错误页面。

它会工作。

假设我的错误控制器页面是'error'。并查看页面是'notfound'

所以,Error.php控制器代码将是:

<?php 
class Error extends CI_Controller 
{ 
    function index() 
     { 
      $this->load->view('notfound'); 
     } 

} 

现在,我在 application/config/routes.php取代$route['404_override'] = '';$route['404_override'] = 'error';

+0

这是什么家伙............ –

7

定制404页是通过使用下面的3步骤

步骤1创建:首先打开路由。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”创建一个视图文件。

1

好你要显示你的自定义404page当你的网站没有找到页面,您只需更换上位于application/error/error_404.php核心文件自定义文件只需更换你的文件在这里,你是好去别的地方,你可以跟随其他通过使用routes和自定义控制器为你定制404 page方法。但是最短,最简单的方法是用定制404error page文件替换核心文件中的应用程序/ config文件夹

0

首先打开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网页。

1

非常非常非常非常多简单的解决方案......
与自定义的404页:)

2

你并不需要创建任何控制器或修改代码,而不是修改一个视图文件,只要编辑/application/views/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'); 
?> 
+0

这实际上是最适合我。我不能让404控制器开始工作,但这让我来访问我的模型,我的意见,做什么,我需要。谢谢。 – dgig

+0

在CI 2.2你可以编辑自己的页面,但3.0我们初始化ci_contoller为您定义(Y) –