错误页面重定向

我是觉得错误页面重定向分为两种

造成不同点在于入口index.php文件,差别

define(‘APP_DEBUG‘,false);

一 按手册   搜索 “异常处理”,那样配置,我觉得这种配置是在,  APP_DEBUG  为TRUE的情况处理的

在config 文件配置

 ‘SHOW_PAGE_TRACE‘ => false,
    ‘SHOW_ERROR_MSG‘ => false,
    ‘ERROR_MESSAGE‘ => ‘发生错误!‘,
    ‘ERROR_PAGE‘ =>‘/Public/error‘,
    /* 错误页面模板 */
    ‘TMPL_ACTION_ERROR‘     =>  MODULE_PATH.‘View/Public/error.html‘, // 默认错误跳转对应的模板文件‘
    ‘TMPL_ACTION_SUCCESS‘   =>  MODULE_PATH.‘View/Public/success.html‘, // 默认成功跳转对应的模板文件‘
    ‘TMPL_EXCEPTION_FILE‘   =>  MODULE_PATH.‘View/Public/error.html‘,// 异常页面的模板文件

当然 你要确保你的文件路径是对的

二    当我们上线的正式环境是,调试是要关闭的APP_DEBUG  为false的情况处理的,那么就会发现一个坑!!!!!

输入错误的路径,你会发现  竟然不会跳转到  你定义的404页面!!!!!

后面再这里找到办法https://www.cnblogs.com/dee0912/p/5140063.html

一、入口文件关闭调试,配置文件配置异常页面

在生产环境中系统的错误信息不能暴露给用户,入口文件的 APP_DEBUG 默认为开启状态

define(‘APP_DEBUG‘,true);

此时如果用户访问到不存在的模块、控制器或者方法会出现:

在生产环境中需要把 APP_DEBUG 设置为 FALSE 或者将该定义屏蔽:

define(‘APP_DEBUG‘,false);

此时如果用户访问到不存在的模块、控制器或者方法会出现:

这个错误的默认模板页在 ./ThinkPHP/Tpl/think_exception.tpl,可以设置自定义的异常页面来代替 ThinkPHP 默认的错误页面,在配置文件 config.php 中配置:

    //异常页面
    ‘TMPL_EXCEPTION_FILE‘ => ‘./Public/Admin/error.html‘,

在访问不存在的模块、控制器或方法时,会加载默认的或者自定义的异常页面模板。

二、定义 EmptyController 类

例如在 Admin 模块下创建一个 EmptyController.class.php,里面的 index 方法定义当用户访问一个不存在的控制器时系统该如何处理:

<?php
namespace Admin\Controller;
use Think\Controller;

class EmptyController extends Controller{
    public function index(){
       //跳转或加载404页
    }
}

三、定义空操作 _empty()

例如在 Admin 模块的  Common 控制器中定义一个 _empty() 方法,当用户访问一个不存在的方法时,就会按照空方法中的设置进行处理:

    //空方法
    function _empty() {
        //跳转或加载404页
    }

注:如果同时请求一个不存在的控制器和一个不存在的方法,或者请求一个不存在的模块时,会加载默认或者自定义的异常页面,而不会执行 EmptyController::index 或 _empty()。

四、数据库错误

在默认情况下,如果程序中的 SQL 语句出现了语法错误,很可能会把数据库信息暴露给用户:

注:在 APP_DEBUG 为 TRUE 且没有自定义异常页面时发生数据库错误会输出以上信息。

在关闭 APP_DEBUG 后,遇到数据库错误时,会加载默认的或者自定义的异常页面。如果希望在发生数据库错误时进行自定的处理时,可以在配置文件中设置数据库调试模式为 FALSE(该配置默认值是 TRUE):

‘DB_DEBUG‘  =>  FALSE, // 数据库调试模式 开启后可以记录SQL日志 3.2.3新增

当该选项开启时,会记录 SQL 日志,路径是 ./Application/Runtime/Logs/YourModule/

但是当该选项开启时,无法自定义处理异常,只能加载系统默认或者自定义的一场模板。如果关闭该选项,同时在开发时与数据库相关的操作都必须捕获异常,例如:

        $result = M(‘session‘)->field(‘a‘)->select();
        if($result === false) {
            //处理
        }

或者

try {
    $result= M("session")->field(‘a‘)->select();
} catch (\Exception $e) {
    //处理
}

注:捕获异常可以参见 ./ThinkPHP/Library/Think/Db/Driver.class.php Line:169

        try{
            $result =   $this->PDOStatement->execute();
            // 调试结束
            $this->debug(false);
            if ( false === $result ) {
                $this->error();
                return false;
            } else {
                return $this->getResult();
            }
        }catch (\PDOException $e) {
            $this->error();
            return false;
        }

原文地址:https://www.cnblogs.com/wen-zi/p/9237857.html

时间: 2024-10-16 22:59:59

错误页面重定向的相关文章

apache的优化-日志轮询、错误页面重定向、压缩功能deflate、客户端缓存expire

1.apache日志轮询 1.1)什么是日志轮询 默认情况下apache的日志是写入到一个文件中的,这对日志的备份和分析造成不便.日志轮询就是可以把apache的日志根据时间进行分开,例如按天轮询:即apache会把当天的日志写入到一个独立的文件中. 1.2)下载并安装日志轮询工具 wget http://cronolog.org/download/cronolog-1.6.2.tar.gz tarzxf cronolog-1.6.2.tar.gz  cdcronolog-1.6.2 ./con

Nginx学习笔记05错误页面重定向

Nginx至少存在两种不同的配置来指定错误页面: 使用try_files配置项. 使用error_page配置项. 先介绍使用try_files配置项的情况. Nginx提供的try_files配置允许在一个location中指定多个潜在的可能的响应页面,Nginx将按照定义的次序依次尝试访问这些响应页面,直到成功访问该页面.根据这个机制,可以在try_files配置的页面列表的最后面加上一个页面作为默认的错误页面. 配置内容: location /abc { root  html; try_f

nginx错误页面重定向

一.Nginx错误页面优雅显示的原因?   当我们访问网站时,由于特殊的原因,经常会出现诸如403,404,503等错误,这极大的影响用户的访问体验,所以我们很有必要做一下错误页面的优雅显示,以提升用户的浏览体验. 二.Nginx下如何定义优雅显示的页面呢?   下面我们就以404错误为例,具体步骤如下:   1.创建自己的404.html页面,放在站点目录下面:    2.更改nginx.conf配置文件,在http模块中加入 fastcgi_intercept_errors on;    3

ASP.NET MVC 自定义错误页面心得

自定义错误页面的目的,就是为了能让程序在出现错误/异常的时候,能够有较好的显示体验. 所以,首先要先了解,我们可以在哪里捕获异常. 当程序发生错误的时候,我们可以在两个地方捕获: Global里面的Application_Error . HandleErrorAttribute 中的OnException.(需要新建一个类,继承HandleErrorAttribute) 那我们到底应该在哪里处理错误好呢?下面我来给大家说说他们的区别. Application_Error 程序中发生的所有异常,都

HAProxy自定义错误页面

HAProxy自定义错误页面 HAProny自定义错误页面有两种方式,一种是由haproxy本机提供错误页面,第二种是将错误重定向到一台专用来提供错误界面的sorry server上来提供错误页面 由haproxy本机提供错误页面 haproxy还可以捕捉错误码,然后根据错误码将错误页面重定向到本机的错误页面上,由haproxy来提供错误页面 语法 errorfile errorcode /path/to/error/indexfile 示例:修改haproxyp配置文件,在default配置段

自定义 404 与 500 错误页面,URL 地址不会重定向。

对于 404 与 500 错误发生时,我们希望自己定义一个更加人性化的页面. 例子 当访问下面这个地址时: http://localhost/aaaa/bbb/ccc/ddd/eee/fff/ggg 浏览器的 URL 不变,依然是 http://localhost/aaaa/bbb/ccc/ddd/eee/fff/ggg 但页面显示的是我们自定义的错误页面. 一.在 web.config 里增加以下节点. <system.webServer> <httpErrors errorMode=

自定义 404 与 500 错误页面,URL 地址不会重定向(二)

上一篇是使用了全局过虑器来实现,还可以使用 HttpApplication 来处理. 参考文章: http://www.cnblogs.com/dudu/p/aspnet_custom_error.html 第一步和上一篇的第一步完全相同. 第二步开始是: 在 Global.asax  里的 MvcApplication 类里加上该方法: /// <summary> /// 应用程序出异常时必然会进这里,当出异常后,返回 404 错误页面. /// </summary> prote

MVC4 自定义错误页面(三)

一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.Web节点下加上 <customErrors mode="On"  defaultRedirect="~/Shared/Error" /> 翻阅一些大神写的博客,在他们的博客中指出defaultRedirect是指向错误页面的URL,可是经过本人测试的时候,发现

Thinkphp5笔记七:设置错误页面②

更加完美的去设置错误页面. 一.准备一个错误页面 error.html,位置:thinkphp\template\index\default\error.html ,准备把前段所有的错误提示都指向这里. 二.空操作指向 在apps\index\controller\IndexBase.php,"基类"里面设置_empty <?php /** * 前端基类 * */ namespace app\index\controller; use app\Common\controller\