How to fix "Route [login] not defined" in Laravel

May 17th, 2025 • 1 minute read time

Laravel's authentication automatically redirects users to a named login route. Here's the error you'll see if you haven't defined one, and how to fix it.

When we use guest middleware to protect routes in Laravel (e.g. for a user's dashboard), the default behavior is to automatically redirect a user to a login page.

That makes sense, given the majority of the time we'd implement this flow anyway.

If you don't have a login route defined though, you'll see Internal Server Error: Route [login] not defined. under a RouteNotFoundException exception.

Here are two ways to solve it.

Quite simply, create a route with the name of login! Here's an example:

Route::get('/auth/login', [LoginController::class, 'index'])
    ->name('login');

Now a route exists with the login name, your users will be redirected here when they attempt to access a page while unauthenticated.

If you didn't want to name this route login, or have to change it for any other reason, you can change this in bootstrap/app.php.

Just call the redirectGuestsTo method under withMiddleware, passing in the path you'd like to redirect users to.

return Application::configure(basePath: dirname(__DIR__))
    //...
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->redirectGuestsTo('/auth/login');
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();

And that's it. If you get the Route [login] not defined error in Laravel, you now know why it occurs and how to fix it.

If you found this article helpful, you'll probably love our practical screencasts!
Author
Alex Garrett-Smith

Comments

No comments, yet. Be the first!