Intereting Posts
preg_replace: замена с использованием% Как я могу исправить флеш-флагом PHP-потокобезопасное / непоточное безопасное рассогласование? Уязвимость $ _SERVER не работает? OAuth2.0 Серверный стек, как использовать состояние для предотвращения CSRF? для draft2.0 v20 PHP: Почему такое странное поведение, когда я включаю файл из другого каталога, который также содержит файл? cURL multi висит / игнорирует таймаут Разработка пакета Laravel Добавить дополнительный текст в конце всех ссылок в определенном классе Удалить значение из строки запроса. Часть 2 Переслать данные из одного действия контроллера в другое в yii2 Загрузка файла Android – $ _FILES возвращается пустым Расширение PECL для Windows показывать прогресс в процессе загрузки страниц с помощью jquery ajax на одном веб-сайте Сопоставьте строку или подстроку с заданным словом, используя regex php Использование SQlite3 в PHP, как подсчитать количество строк в наборе результатов?

Fat Free Framework (F3): пользовательская страница 404 (и другие ошибки)

Как я могу обрабатывать свою 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 и т. Д.).