Override default 404 behavior in Laravel

Amit Merchant · April 22, 2022 ·

When working with Laravel routes, if it’s not able to find the matching route, a typical 404 HTTP response will be generated and returned back.

Take the following for example.

Route::get('/user/{user}', function (User $user) {
    return $user->email;
});

As you can tell, here for this route, if a user for the matching ID exists, it will return the intended response based on the route model binding.

But in case, if it’s not able to find the specified user, it will return a typical 404 response.

How do you override this behavior? Enter the Route::fallback method

The Route::fallback method

Laravel ships with this Route::fallback method that you can use to define a route that will be executed when no other route matches the incoming request.

So, for instance, in our previous example, if there’s no matching route for a specified user, the application should move the user to the dashboard.

You can accomplish this behavior using the Route::fallback method like so.

Route::fallback(function () {
    return view('dashboard');
});

You can put this fallback route to the routes/web.php along with the other routes (preferably at the end of the file).

Learn the fundamentals of PHP 8 (and 8.1), the latest version of PHP, and how to use it today with my new book PHP 8 in a Nutshell. It's a no-fluff and easy-to-read guide to the latest features and nitty-gritty details of PHP 8. So, if you're looking for a quick and easy way to PHP 8, this is the book for you.

👋 Hi there! I'm Amit. I write articles about all things web development. If you like what I write and want me to continue doing the same, I would like you buy me some coffees. I'd highly appreciate that. Cheers!

Comments?