Laravel框架实现404页面500页面友好提示
0x01 背景
程序开发的时候,我们开发者都会开启debug,来调试程序,以及打印我们想看到的数据。但是当项目上线的时候,如果再开启debug,那就是在给广大的黑客们开启属于他们的机会了。虽然Laravel框架关闭debug后就不会将报错信息显示在页面上,但是也并不美观。而且纯英文的提示在国内来看也并不太好。所以这个时候就需要做友好的提示页面了
0x02 正文
- 要实现友好提示其实就是抓取每个页面的状态码,如果不是200,那么就根据状态码进行区分返回404或者500页面
- Laravel框架中有一个默认抓取并返回报错信息的文件,
appExceptionsHandler.php
- 我们来修改一下这个文件的render方法
public function render($request, Exception $e)
{
if ($e instanceof ModelNotFoundException) {
$e = new NotFoundHttpException($e->getMessage(), $e);
}
$debug = config('app.debug', false); // 判断debug是否开启
if (empty($debug)) { // 如果debug关闭
$result = method_exists($e, 'getStatusCode');
if (!empty($result)) {
// 404友情提示
$statusCode = $e->getStatusCode();
if ($statusCode == 404) {
return response()->view('error', [
'info' => '抱歉,指定的页面不存在.',
'url' => '/',
'code' => 404,
'msg' => 'Sorry, page not found.'
]);
}
} else {
// 出现错误提示
return response()->view('error', [
'info' => '抱歉,好像出错了.',
'url' => '/',
'code' => 503,
'msg' => 'Error,It have been wrong.'
]);
}
} else {
// 如果开启debug模式
return parent::render($request, $e);
}
}
0x03 结语
error是实现做好的模板,直接调用即可。