在PHP codeigniter中重定向到自定义设计500错误页面

时间:2017-05-10 05:35:24

标签: php .htaccess codeigniter-3

我正在开发电子商务网站并在PHP中使用CodeIgniter框架。我有两个面板:1)正面和2)管理员。

在页面加载或URL重定向期间,如果出现“内部服务器错误”。发生这种情况,我想为admin显示我的自定义设计页面500_error_admin.php,为前端UI显示500_error_front.php。

让我清楚500_error_admin.php和500_error_front.php两个网页都有不同的设计。

我尝试使用此代码,但我无法取得成功

的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>

<IfModule !mod_rewrite.c>
    #Directly give the path of page
    ErrorDocument 500 http://localhost/myproject/errors/500_admin.php
    #Also try with create controller and call method
    #ErrorDocument 500 http://localhost/myproject/admin/Error/show_500    
</IfModule>

控制器方法

class Error extends CI_Controller {    
    function __construct() {
        parent::__construct();
    }

    function error_500() {        
        $this->load->view('errors/500_admin');      
    }
}

这在我要找的codeigniter中是否可行?

请建议我,我怎样才能以其他方式做到这一点?

4 个答案:

答案 0 :(得分:0)

myproject/application/config/database.php

SET $db['default']['db_debug'] to FALSE instead of TRUE .

$db['default']['db_debug'] = FALSE;

答案 1 :(得分:0)

您可以通过owerride核心摘录控制器为管理员和客户端进行归档,按照给定的步骤进行归档:

步骤:1 添加子类前缀:$ config [&#39; subclass_prefix&#39;] =&#39; MY _&#39 ;;在您的配置文件(system / application / config / config.php)

步骤:2 在您的目录(系统/应用程序/库)中创建MY_Exceptions.php文件并添加以下代码

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;
    }
}

多数民众赞成!不是您的错误页面将重定向到error.html页面。希望这会对你有所帮助!

问候!

答案 2 :(得分:0)

您可以设置自定义页面以显示错误。 codeigniter 3已经有默认错误页面。如果要更改错误页面,请在application / config / config.php

中打开config.php

在config.php内部找到错误视图目录路径

$config['error_views_path'] = APPPATH.'/views/errors/'; //path to you error view directory

然后更改为您的目录错误视图。内部视图有2个目录。[cli,html] 通过cmd或终端访问您的网站时cli视图处理的位置。 通过浏览器访问您的网站时的html视图句柄。

在这种情况下,您需要更改html的设计。

在html内部有5个由ci定义的错误页面。

-application/views/html/error_404.php // while page doesn't exist
-application/views/html/error_db.php // while error on db such as configuration and etc
-application/views/html/error_exception.php // error exception
-application/views/html/error_general.php // error general
-application/views/html/error_php.php

您可以将500_admin.php重命名为500_admin.php更改为error_general.php。对于变量消息,您需要打开默认的error_general.php并粘贴到新视图中 记得把它们放在application / views / errors / html里面。 所以你的错误页面结构文件夹将如下所示

application/views/errors/html/error_general.php

有关详细说明,您可以查看文档here

答案 3 :(得分:0)

这是一个老问题,但这是我的解决方案:

在应用程序/核心

<?php


class MY_Exceptions extends CI_Exceptions
{
    public function show_error($heading, $message, $template = 'error_general', $status_code = 500)
    {
        $message = '<p>'.(is_array($message) ? implode('</p><p>', $message) : $message).'</p>';
        $_SESSION['500_error_heading'] = $heading;
        $_SESSION['500_error_message'] = $message;

        redirect('error/server');
    }
}

在 config/routes.php

$route['error/server'] = 'errorController/error_server';

在错误控制器中

public function error_server()
    {
        $session = new SessionHelper();

        $data['heading'] = $session->get('500_error_heading');
        $data['message'] = $session->get('500_error_message');

        $session->unset('500_error_heading');
        $session->unset('500_error_message');

        $this->CI->load->view_template('errors/html/error_general', $data);
    }