Как я могу обрабатывать свою 404 пользовательскую страницу (и, возможно, другие ошибки)?
Я просто попытался добавить часть маршрутизации, чтобы добавить
GET /@codes /WebController->error
Где мой класс WebController обрабатывает ошибку, а для 404 я решил (частично). По сути это работает
http://mydomain.ext/itdoesntexists
но если я вспомню
http://mydomain.ext/sub/maybe_another_sub/and_so_on/doesnt_exist
Мой маршрут (конечно) не работает.
Кстати, с этим маршрутом в каждом случае он не нажимает заголовок 404 (просто маньяк-видение вещей, я думаю, что Google ищет ресурсы и не получает «чистого» 404).
спасибо
Вам не нужно определять маршрут для этого. F3 автоматически генерирует код состояния 404 для любого не определенного маршрута.
Если вы хотите определить страницу пользовательской ошибки, вам нужно установить переменную ONERROR.
Вот краткий пример:
$f3->route('GET /','App->home'); $f3->set('ONERROR',function($f3){ echo \Template::instance()->render('error.html'); }); $f3->run();
с error.html, определяемым как:
<!DOCTYPE html> <head> <title>{{@ERROR.text}}</title> </head> <body> <h1>{{@ERROR.text}}</h1> <p>Error code: {{@ERROR.code}}</p> </body> </html>
Теперь, если вы вызываете какой-либо не определенный маршрут, например / foo, шаблон error.html будет отображаться с кодом статуса 404.
NB: это работает для других кодов ошибок. Другие коды ошибок запускаются F3 или вашим приложением с помощью команды $f3->error($status)
, $ status – любой действительный код статуса HTTP (404, 500, 403 и т. Д.).