Sling Academy
Home/PHP/Laravel: How to create a custom 404 page with Blade

Laravel: How to create a custom 404 page with Blade

Last updated: January 18, 2024

Introduction

Dealing with errors gracefully is an essential part of web development. When a user requests a page that doesn’t exist, presenting them with a generic error message can be frustrating and unhelpful. This is where the 404 page comes in; a thoughtfully designed 404 can improve the user’s experience even when they’re lost. Laravel makes customizing the 404 page straightforward with its Blade templating engine.

This tutorial will guide you through creating a custom 404 error page in Laravel. We’ll start with setting up a basic Laravel app, handling the exceptions to show a custom 404 page, and then designing a Blade template for our custom 404 page.

Setting Up a Basic Laravel Application

1. First, you’ll need to have Composer installed on your machine as Laravel utilizes it for dependency management. If you haven’t already installed Composer, you can find instructions on this page: How to set up PHP Composer in Windows or this page How to Set Up PHP Composer in MacOS.

2. Once Composer is installed, you can create a new Laravel application by running the following command in your terminal:

composer create-project --prefer-dist laravel/laravel name-of-your-app

With your new Laravel application ready, navigate to your project directory:

cd name-of-your-app

Then, serve the application:

php artisan serve

A Laravel development server will start, and you can view your application by visiting http://localhost:8000 in your browser.

Understanding the Exception Handler

In Laravel, all exceptions are handled by the App\Exceptions\Handler class. It includes a method called render which determines the response for various exceptions.

public function render($request, Exception $exception)
{
    return parent::render($request, $exception);
}

This method uses the parent class’s render method to respond according to the type of exception. For most exceptions, this is adequate, but we can modify it to customize our 404 response.

Creating a Custom 404 Blade Template

1. In your Laravel application, navigate to the resources/views directory.

2. Create a new Blade template file named 404.blade.php. This will be your custom 404 page:

touch resources/views/errors/404.blade.php

Edit the file with your preferred text editor and add the HTML structure you would like to use. For example:

<!-- resources/views/errors/404.blade.php -->
<!doctype html>
<html lang="en">
<head>
    <title>Page Not Found</title>
    <!-- Add any stylesheets here -->
</head>
<body>
    <h1>Oops! The Page you're looking for isn't here.</h1>
    <p>Maybe the page was moved or deleted, or perhaps you just typed the wrong address. Why not try a search, or start from the homepage? </p>
</body>
</html>

3. Now you can style your custom 404 page with CSS. Create a new stylesheet in the public/css directory, and link it in your custom 404 template:

<link rel="stylesheet" href="{{ asset('css/style.css') }}">

All that’s left is to visit a URL that doesn’t exist on your Laravel server, and you should see your custom 404 page.

See also:

Testing Your Custom 404 Page

Testing is as simple as going to a URL that you know does not exist on your site. Your Laravel application will automatically serve your new custom view for 404 errors, thanks to Laravel’s auto-discovery of error templates based on HTTP status codes.

For example, visiting http://localhost:8000/thispagedoesnotexist should now display your custom 404 page instead of the default error page.

Conclusion

Customizing a 404 error page in Laravel is both essential and easy to do. A custom 404 page can reflect your app’s theme, guide users when they’re lost, and it provides a much more refined experience. By utilizing Laravel’s handling of exceptions and the Blade template engine, you’re enhancing your application’s professionalism and usability.

Remember to regularly update your custom 404 page. Keeping it relevant and informative helps retain users who might otherwise leave your site due to an unfortunate dead end.

Next Article: Laravel: How to define custom Blade directives

Previous Article: Laravel: How to display SVG images in Blade templates

Series: Laravel & Eloquent Tutorials

PHP

You May Also Like

  • Pandas DataFrame.value_counts() method: Explained with examples
  • Constructor Property Promotion in PHP: Tutorial & Examples
  • Understanding mixed types in PHP (5 examples)
  • Union Types in PHP: A practical guide (5 examples)
  • PHP: How to implement type checking in a function (PHP 8+)
  • Symfony + Doctrine: Implementing cursor-based pagination
  • Laravel + Eloquent: How to Group Data by Multiple Columns
  • PHP: How to convert CSV data to HTML tables
  • Using ‘never’ return type in PHP (PHP 8.1+)
  • Nullable (Optional) Types in PHP: A practical guide (5 examples)
  • Explore Attributes (Annotations) in Modern PHP (5 examples)
  • An introduction to WeakMap in PHP (6 examples)
  • Type Declarations for Class Properties in PHP (5 examples)
  • Static Return Type in PHP: Explained with examples
  • PHP: Using DocBlock comments to annotate variables
  • PHP: How to ping a server/website and get the response time
  • PHP: 3 Ways to Get City/Country from IP Address
  • PHP: How to find the mode(s) of an array (4 examples)
  • PHP: Calculate standard deviation & variance of an array