20 octubre, 2024

Crear urls amigables en Laravel con Slug

En Laravel, las URLs amigables se logran utilizando rutas claras y estructuradas que sean fáciles de leer tanto para los usuarios como para los motores de búsqueda (SEO). Laravel facilita esto con su sistema de enrutamiento, que permite definir URLs amigables de manera sencilla.

Crear urls amigables en Laravel con Slug

Suscríbete a nuestro canal en Youtube

Suscríbirse

En Laravel, el slug es una versión "amigable para la URL" de un campo, generalmente el título o nombre de un registro, que permite generar URLs legibles y optimizadas para SEO. Por ejemplo, un título de post "Laravel Tutorial" podría convertirse en un slug "laravel-tutorial". Esto facilita tanto la lectura como el acceso a los recursos en la web.

Pasos para implementar Slugs en Laravel:

  1. Agregar el campo slug a la base de datos.
  2. Generar el slug automáticamente a partir del título.
  3. Modificar las rutas y controladores para usar el slug en lugar del ID.

¿Qué es una Url Amigable?

Una url amigable es una ruta limpia que solo lleva palabras separadas por guiones medios, omitiendo números y caracteres extraños como tildes, ñ, etc. esta configuración ayuda a la indexación por parte de Google, es un factor para el posicionamiento web, además ayuda al usuario a interpretar mucho más rápido en que lugar o sección se encuentra navegando en una página web. Un ejemplo de compración sencillo puede ser:

Aquí te dejo los pasos clave para crear URLs amigables en Laravel:

1. Definir rutas con nombres claros

En el archivo routes/web.php, puedes definir rutas con nombres que describan claramente el recurso o la acción que representan. Un ejemplo de URL amigable podría ser:  

php

Route::get('/productos', [ProductController::class, 'index'])->name('productos.index');
Route::get('/productos/{id}', [ProductController::class, 'show'])->name('productos.show');

Esto generaría URLs como:

  • /productos para la lista de productos
  • /productos/1 para el producto con ID 1

2. Utilizar nombres en lugar de IDs en la URL

En lugar de utilizar IDs numéricos en las URLs, puedes usar campos más descriptivos, como los nombres o slugs. Para esto, es común agregar una columna slug en la tabla de la base de datos y usarla en la URL.

Primero, asegúrate de que tu modelo tenga el campo slug:  

php

Schema::table('productos', function (Blueprint $table) {
    $table->string('slug')->unique();
});

En tu controlador, puedes buscar el producto por su slug:  

php

public function show($slug)
{
    $producto = Producto::where('slug', $slug)->firstOrFail();
    return view('productos.show', compact('producto'));
}

Definirías la ruta así:  

php

Route::get('/productos/{slug}', [ProductController::class, 'show'])->name('productos.show');

Esto generaría URLs como /productos/camiseta-verde en lugar de /productos/1, lo que es más amigable para los usuarios.

3. Generar el slug automáticamente

Puedes usar la función Str::slug() de Laravel para generar slugs automáticamente a partir del nombre del producto cuando se cree o se actualice.

Por ejemplo, en el modelo:  

php

use Illuminate\Support\Str;

class Producto extends Model
{
    protected static function booted()
    {
        static::creating(function ($producto) {
            $producto->slug = Str::slug($producto->nombre);
        });
    }
}

4. Usar nombres de rutas para generar URLs

Laravel permite generar URLs dinámicamente utilizando nombres de rutas. Esto asegura que tus URLs se mantengan consistentes incluso si cambias la estructura de las rutas en el futuro.  

php

<a href="{{ route('productos.show', ['slug' => $producto->slug]) }}">
    Ver producto
</a>

Este código genera la URL amigable para el producto.


Leido 4948 veces | 0 usuarios

Código fuente no disponible.

Compartir link del tutorial con tus amigos


Laravel Página Web Administrable

USD 17.00

Descarga del código fuente

Laravel Página Web Administrable
Curso de Laravel básico

USD 17.00

Descarga del código fuente

Curso de Laravel básico

Más tutoriales de Laravel

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024