506

Variant Also Negotiates

El bucle infinito de la negociación de contenido. Cuando las variantes se vuelven locas y el servidor entra en pánico existencial.

🌀 Server Error

📋 ¿Qué narices es esto?

El código 506 Variant Also Negotiates es el "ayuda, estoy atrapado en un bucle infinito" de HTTP. Es cuando el servidor intenta hacer content negotiation (elegir entre versiones en español, inglés, JSON, XML...) pero las variantes se referencian unas a otras en un círculo vicioso que nunca termina. Como dos espejos enfrentados creando infinitas reflexiones.

Variant Also Negotiates significa que una variante también negocia - el servidor detectó que una variante de contenido también es un negociador, creando un bucle de negociación recursivo. Esto pasa típicamente con TCN (Transparent Content Negotiation) mal configurado en Apache, donde las variantes apuntan a otros recursos que también negocian.

El 506 aparece específicamente en:

  • Servidores Apache con mod_negotiation mal configurado
  • Archivos .var que crean referencias circulares
  • TCN donde las variantes apuntan a otros negociadores
  • Content negotiation con configuraciones recursivas
  • Cuando una variante es también un recurso que negocia

🎯 Dato curioso

El 506 es el error más "meta" de HTTP: es un error sobre errores de configuración que crean bucles infinitos sobre decidir qué mostrar. Es como un filósofo preguntándose quién vigila al vigilante, pero en versión servidor web.

La situación típica es surrealista: el cliente pide un recurso multiidioma, el servidor consulta su configuración de variantes, encuentra que la variante española apunta a un recurso que también negocia, que apunta a otro que también negocia... y así hasta el infinito. El servidor, detectando esta locura, dice "nope, 506" y corta por lo sano antes de quedarse sin memoria.

🔧 Cómo romper el bucle infinito

🖥️ Para administradores (arregla la configuración)

  1. Revisa archivos .var: Busca referencias circulares entre variantes.
  2. Verifica mod_negotiation: Comprueba la configuración de Apache TCN.
  3. Mapea las variantes: Documenta qué variante apunta a qué recurso.
  4. Elimina recursión: Asegúrate de que las variantes apunten a recursos finales.
  5. Testa negotiation: Verifica que cada variante resuelve correctamente.

📱 Para desarrolladores (prevé el problema)

  1. Evita TCN si es posible: Usa content negotiation más simple.
  2. Valida configuraciones: Herramientas que detecten bucles en .var.
  3. Implementa timeouts: Límites en negociación para evitar bucles.
  4. Usa redirects directos: En lugar de negociación compleja.
  5. Documenta variantes: Mapa claro de todas las opciones disponibles.

Problemas típicos con 506

  • Archivo .var con bucle:
    URI: doc; vary="language"
    URI: doc.en; vary="language"; language="en"
    URI: doc; vary="language"

    La primera y tercera línea crean un bucle infinito.
  • TCN mal configurado:
    CacheNegotiatedDocs on
    LanguagePriority en es fr
    AddLanguage en .en
    AddLanguage es .es

    Configuración que puede crear referencias circulares.
  • Variante que apunta a negociador:
    index.html → index.var → index.html
    La variante apunta a un recurso que también negocia contenido.

🚀 Respuesta rápida para emergencias

🔥 Si tienes un 506 ahora mismo:
1. Desactiva TCN temporalmente (Options -MultiViews)
2. Usa URLs directas en lugar de negociación
3. Revisa archivos .var en busca de bucles obvios
🎯 Truco ninja:
Usa curl -v con Accept-Language para ver exactamente cómo está negociando el servidor.