ForHosting KIT · Utilidades de desarrollo

Resuelva colisiones de slug con un sufijo numérico

El solucionador de colisiones compara el slug exacto que usted desea con los slugs ya ocupados.

● BetaGratis · en su navegador
Úselo desde WebAPIEmailTelegramApp pronto

Si el valor está disponible, lo devuelve sin cambios. Si ya existe, prueba alternativas numéricas como -2, -3 y las siguientes hasta encontrar la primera libre. Es un componente pequeño y determinista para sistemas de publicación, importaciones, generadores de documentación y cualquier flujo que deba asignar una ruta URL única sin sustituir contenido existente por accidente.

Conserve el slug deseado siempre que sea posible

Un buen solucionador de colisiones solo debe modificar una URL cuando sea necesario. Envíe el valor propuesto en desired_slug e incluya todos los valores ocupados en used_slugs. La comparación es exacta y distingue mayúsculas de minúsculas. Si la propuesta no aparece en el conjunto ocupado, el resultado contiene el slug original e indica que no hubo colisión. La herramienta no convierte a minúsculas, no recorta, no translitera ni sustituye signos: esas transformaciones corresponden a una etapa previa de creación del slug. Separar ambas responsabilidades evita cambios inesperados en las URL y permite reproducir el resultado en compilaciones, migraciones y pruebas. Un slug deseado vacío se rechaza, pues convertirlo en un sufijo arbitrario ocultaría un título ausente o un mapeo anterior defectuoso. Las entradas duplicadas de la lista no alteran la respuesta; la consulta las consolida de forma natural, así que usted no necesita depurarlas para obtener un resultado estable.

Elija el primer sufijo numérico disponible

Cuando el slug exacto está ocupado, la selección empieza en 2, de acuerdo con la convención habitual: la ruta sin sufijo representa el primer elemento y el siguiente recibe -2. Después se comprueban los candidatos en orden ascendente: deseado-2, deseado-3, deseado-4 y así sucesivamente. El proceso se detiene ante el primer candidato ausente de la lista. Por eso los huecos se reutilizan de manera previsible. Si report, report-2 y report-4 están ocupados, por ejemplo, el resultado será report-3. Se comparan cadenas completas, de modo que annual-report o report-old no generan una colisión. Una terminación numérica existente se considera parte literal del valor y no se interpreta ni reescribe: si usted solicita release-2 y ya existe, el primer candidato será release-2-2. Este comportamiento evita adivinar intenciones y garantiza que las mismas entradas siempre produzcan la misma salida, sin depender de bases de datos, relojes, números aleatorios, configuraciones regionales ni del orden de ejecución.

Utilice el resultado con seguridad al publicar

Esta capacidad resulta útil cuando su aplicación ya conoce los slugs reservados. Reúna esos valores, envíelos con el slug deseado y utilice el resultado para el nuevo registro. La respuesta también indica si ocurrió una colisión y, cuando añade una terminación, qué número seleccionó. Estos datos sirven para registros, vistas previas o mensajes que expliquen por qué la URL difiere de la propuesta inicial. La operación no reserva el valor devuelto; los sistemas con escrituras simultáneas deben conservar una restricción única y reintentar con una lista actualizada si otro proceso ocupa el mismo slug. En importaciones por lotes, añada cada asignación correcta al conjunto local antes de resolver la fila siguiente. Como la comparación es exacta, aplique antes y de forma coherente su propia política de URL: use un generador de slugs si necesita normalizar mayúsculas, Unicode, espacios o puntuación. Cada solicitud API cuesta $0.002, y la misma lógica determinista puede ejecutarse en el navegador para comprobaciones interactivas.

Publique una página sin sustituir otra

Conserve la ruta preferida del editor si está libre o asigne la primera alternativa numerada disponible si ya está ocupada.

Importe registros con URL únicas y estables

Resuelva cada slug preparado frente a las rutas existentes y recién asignadas para que los títulos repetidos reciban sufijos deterministas.

Genere rutas de documentación

Evite que encabezados o páginas generadas duplicados reclamen la misma ruta y mantenga direcciones legibles y previsibles.

¿Qué sucede si el slug deseado está libre?

Se devuelve sin cambios y collision es false.

¿Qué sufijo se prueba primero?

El proceso comienza con -2 y después comprueba -3, -4 y valores superiores hasta encontrar el primero libre.

¿Convierte texto en un slug para URL?

No. Compara y amplía el valor exacto recibido. Utilice antes un generador si necesita normalizar mayúsculas, espacios, puntuación o Unicode.

¿La comparación distingue mayúsculas?

Sí. Product y Product son idénticos, mientras que Product y product se consideran cadenas diferentes.

¿La capacidad reserva el slug devuelto?

No. Calcula un candidato a partir de la lista recibida. Su almacenamiento debe imponer la unicidad al guardar el registro.

¿Cuánto cuesta una solicitud API?

Cada solicitud cuesta $0.002.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/dev/slug-collision-resolve

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/dev/slug-collision-resolve \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"desired_slug":"product-guide","used_slugs":["product-guide","product-guide-2"]}'
{
  "desired_slug": "product-guide",
  "used_slugs": [
    "product-guide",
    "product-guide-2"
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.slug_collision_resolve",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

max_used_slugs10000
max_slug_chars10000
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Ver la documentación completa del KIT →