ThinkPHP6.0找不到控制器时展示404页面而非“方法不存在”错误页

January 10, 2021 · 开发笔记 · 48次阅读

默认情况下,TP6当开启调试模式时,试图访问一个不存在的控制器时会返回以下页面:
QQ截图20210110120020.png
如果你没有打开调试模式就长这样:
QQ截图20210110120137.png
一般情况下,“找不到控制器”对于用户来说就是404找不到页面,并且在调试模式没有关闭时容易泄露服务器信息。

1.http_exception_template(仅适用于部署模式)

ThinkPHP自带了http_exception_template配置用于设置抛出HTTP错误时使用的模板文件。
优点:配置简单;缺点:仅适用于部署模式、各个错误码需单独设置。
在app.php内添加以下内容:

'http_exception_template'    =>  [
    // 404
    404 => \think\facade\App::getRootPath().'404.html', 
    //getRootPath为获取项目根目录,可根据实际情况修改
    // 其他错误码
    401 => \think\facade\App::getRootPath().'401.html',
]

2.ExceptionHandle

ExceptionHandle.php中预置了异常处理类,只需捕获HttpException异常即可返回各个页面的错误码。
在ExceptionHandle.php自带的return parent::render($request, $e);下方添加以下内容:

if($e instanceof HttpException){
    return response("网页错误:".$e->getStatusCode(), $e->getStatusCode());
}

其中response助手函数的第一个参数为返回的页面内容,可自行修改或套模板。

除声明外inSoraSky博客(http://www.sorasky.in/)所有内容均为本人所原创,转载时请注明来源!

喝杯水

thinkphp404

最后编辑于7天前

添加新评论