Stop Missing New Laravel Features. Join 1,400+ Devs Getting Alerts. Sign Up Free →

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 love our practical screencasts.
Author
Alex Garrett-Smith
Share :

Comments

No comments, yet. Be the first!