如何处理我的 404 自定义页面(以及可能的其他错误)?
我刚刚尝试在路由部分添加
GET /@codes /WebController->error
我的类WebController处理错误的地方,对于404,我解决了(部分)。实际上,它适用于
http://mydomain.ext/itdoesntexists
但是如果我记得一个
http://mydomain.ext/sub/maybe_another_sub/and_so_on/doesnt_exist
我的路线(当然)不起作用。
顺便说一句,在每种情况下,这条路线都不会推送 404 标头(只是对事物的疯狂愿景,我正在考虑谷歌寻找资源,但它没有收到"纯"404)。
谢谢
您不必为此定义路由。F3 将为任何未定义的路由自动生成 404 状态代码。
如果要定义自定义错误页面,则需要设置 ONERROR 变量。
下面是一个快速示例:
$f3->route('GET /','App->home');
$f3->set('ONERROR',function($f3){
echo 'Template::instance()->render('error.html');
});
$f3->run();
有错误.html定义为:
<!DOCTYPE html>
<head>
<title>{{@ERROR.text}}</title>
</head>
<body>
<h1>{{@ERROR.text}}</h1>
<p>Error code: {{@ERROR.code}}</p>
</body>
</html>
现在,如果您调用任何未定义的路由(如/foo),模板错误.html将使用 404 状态代码呈现。
注意:这适用于其他错误代码。其他错误代码由 F3 或您的应用程序使用命令 $f3->error($status)
触发,$status任何有效的 HTTP 状态代码(404、500、403 等)。