La última línea de defensa: dominar las rutas de respaldo de Laravel

  • Publicado el 21 octubre, 2024
  • Palabras: 333

¿Alguna vez te preguntaste qué sucede cuando un usuario accede a una URL que no existe en tu aplicación Laravel? Usa el método Route::fallback, tu arma secreta para manejar esos molestos errores 404 con estilo.

La última línea de defensa: dominar las rutas de respaldo de Laravel

#¿Qué es Route::fallback?

 

Route::fallback es la forma que tiene Laravel de decir: "Si todo lo demás falla, haz esto". Es la ruta de último recurso, que captura cualquier solicitud que no coincida con las rutas definidas.

 

#Uso básico

 

Aquí te explicamos cómo puedes usarlo:

 

Route::fallback(function () {
    return view('errors.404');
});

 

#Ejemplo práctico: Controlador inteligente 404

 

Creemos una ruta alternativa que haga más que simplemente mostrar un error:

 

use IlluminateSupportFacadesRoute;
use AppModelsPage;
use IlluminateSupportStr;

Route::fallback(function () {
    $path = request()->path();
    
    // Try to find a similar page
    $similarPage = Page::where('slug', 'like', '%' . Str::slug(Str::words($path, 1, '')) . '%')
        ->first();

    if ($similarPage) {
        return redirect()->to($similarPage->slug)
            ->with('message', 'The page you looked for was not found, but you might be interested in this.');
    }

    // Log the miss
    Log::channel('404s')->info('Missing page: ' . $path);

    // Return custom 404 view with search functionality
    return response()
        ->view('errors.404', ['searched' => $path], 404)
        ->header('Cache-Control', 'no-cache, must-revalidate');
});

 

En este ejemplo:

 

  • Intentamos encontrar una página similar en función de la URL
  • Si la encontramos, redirigimos con un mensaje útil
  • Registramos todos los errores 404 para su posterior análisis
  • Devolvemos una página 404 personalizada con la ruta que buscaban

 

#Consejo Pro: rutas API de respaldo

 

¡No te olvides de las rutas API! Puedes definir una alternativa independiente para tu API:

 

Route::fallback(function(){
    return response()->json([
        'message' => 'Page Not Found. If error persists, contact info@website.com'
    ], 404);
})->name('api.fallback.404');

 

Al aprovechar Route::fallback, no solo está solucionando errores, sino que también está creando oportunidades para guiar a los usuarios, recopilar información y mejorar la experiencia de usuario de su aplicación. ¡Es la red de seguridad que evita que sus usuarios queden en el olvido!

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión