Изменение страниц ошибок в laravel

По умолчанию Laravel предлагает базовые шаблоны для наиболее распространённых HTTP-ошибок. Эти страницы функциональны, но минималистичны как в визуальном, так и в информационном плане. Простая страница, в кодом ошибки и сообщением в центре.

Laravel 404 default

Для страницы, возвращаемой с кодом 500 в режиме разработки (APP_DEBUG=true), ситуация будет несколько более информативная.

Laravel 500 default debug

В продакшен-режиме конечно ничего этого посетитель не увидит, и будет такая же простая страница, как на первом скриншоте. Если разработчика это не устраивает, то в Laravel предусмотрен простой способ создания своих страниц ошибок, при помощи blade-шаблонов.

Laravel автоматически ищет шаблоны для страниц ошибок в директории resources/views/errors/ по коду HTTP-ответа (например, 404.blade.php). Если такого нет, то ищется общий шаблон для группы ошибок (например, 4xx.blade.php или 5xx.blade.php) При этом наличие общих шаблонов не влияет на отображение ошибок 404, 500 и 503, поскольку в Laravel есть внутренние, выделенные страницы для этих кодов состояния.

На практике, создание шаблона для страницы jib,rb 404 в Laravel-приложении может быть таким:

@extends('layouts.app')

@section('title', 'Страница не найдена')

@section('content')
<div class="container py-5">
    <div class="row justify-content-center">
        <div class="col-md-8 text-center">
            <h1 class="display-1 mb-4">404</h1>
            <h2 class="h2 mb-4">Страница не найдена</h2>
            
            <p class="lead mb-5">
                Запрашиваемая страница не существует. Возможно, она была перемещена 
                или удалена. Давайте найдём то, что вам нужно.
            </p>
                       
            <div class="d-flex flex-wrap justify-content-center gap-3">
                <a href="{{ url('/') }}" class="btn btn-outline-primary btn-lg">
                    На главную
                </a>
            </div>
        </div>
    </div>
</div>
@endsection

И при открытии несуществующего адреса сайта, пользователь увидит это

Laravel custom error template

Это наиболее простой способ создаения кастомных страниц ошибок в laravel. Для большинства не самых сложных проектов этого будет вполне достаточно.