20 octubre, 2024
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.
Suscríbete a nuestro canal en Youtube
SuscríbirseEn 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.
slug
a la base de datos.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:
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 1En 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.
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);
});
}
}
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.
© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024