Skip to main content

🔄 Error 506 – La variante también negocia

🔄 Error 506 – La variante también negocia (Variant Also Negotiates)

El error 506 indica que el servidor encontró un problema en la negociación de contenido, porque la variante del recurso también intenta realizar negociación, lo cual genera un bucle interno o una configuración conflictiva.

En lenguaje simple:
El servidor se confundió al decidir qué versión del recurso entregar, porque las propias variantes también están diseñadas para negociar, creando un ciclo infinito.

Este código está definido en el RFC 2295 (transparente content negotiation).


Causas más comunes

🔁 1. Bucle en negociación de contenido

Ocurre cuando:

  • El recurso A negocia contenido

  • pero la variante B también negocia contenido

  • y ambas se referencian entre sí

Resultado: un ciclo repetitivo → 506.


🌐 2. Configuración errónea de MultiViews o contenido negociado en Apache

Con mod_negotiation, Apache puede equivocarse si:

  • Hay múltiples variantes contradictorias

  • Un archivo .var mal configurado

  • Se mezclan idiomas o formatos de forma incorrecta


🔧 3. El servidor intenta entregar una variante que es a su vez un negociador

Por ejemplo:

  • /index.html

  • /index.en.html

  • /index.var (archivo de negociación)

Si .var referencia otra variante que también negocia → 506.


🛑 4. Configuración errónea en servidores que soportan negociación automática

Como:

  • Apache

  • Nginx con módulos externos

  • Servidores con negociación por idioma o formato


🧩 5. Fallas en negociación de API que retornan diferentes representaciones

Ejemplos:

  • JSON

  • XML

  • HTML

  • YAML

Si las variantes referencian negociadores en vez de contenido final.


🔧 Soluciones recomendadas

1️⃣ Revisar archivos .var de negociación (Apache)

Estos archivos definen variantes como:


URI: index.html URI: index.en.html URI: index.es.html

Asegúrate de que ninguna variante sea otro archivo de negociación.


2️⃣ Desactivar MultiViews si causa conflicto

En .htaccess:


Options -MultiViews

Esto evita que Apache intente negociar automáticamente.


3️⃣ Eliminar bucles de referencia

Si una variante apunta a:

  • otro negociador

  • un recurso dinámico que también negocia

  • una redirección circular

Debes corregir esas rutas.


4️⃣ Simplificar la negociación de contenido

En lugar de múltiples variantes:

  • Usa una sola versión del recurso

  • Implementa negociación manual desde backend (PHP, Node, Laravel, etc.)

Ejemplo en PHP:


if ($accept == 'application/json') { ... } else { ... }

Esto evita conflictos del servidor.


5️⃣ Revisar configuraciones de idiomas o formatos

Errores típicos:

  • Archivos duplicados (index.html, index.htm, index)

  • Variantes conflictivas (.json, .xml, .var)

  • Carpeta con mezcla de idiomas


6️⃣ Desactivar negociación transparente en Apache

Para evitar errores:


CacheNegotiatedDocs Off

🔐 Consejo Pro

El 506 casi siempre es un error de configuración en Apache o en negociación de contenido, no de la aplicación en sí.

Para evitarlo:

✔️ No mezcles negociadores con variantes finales
✔️ Evita referencias cruzadas entre archivos .var
✔️ Desactiva MultiViews si no lo usas
✔️ Usa negociación desde tu aplicación en vez del servidor