300 Multiple Choices: una URL, varias versiones

300 Multiple Choices indica que un recurso tiene varias representaciones y que el cliente debe elegir una; se usa muy poco en la web actual.

Comprueba el código de estado de una URL

300 Multiple Choices indica que el recurso solicitado existe en varias versiones (distintos formatos, idiomas o variantes) y que el cliente debe elegir una. Es uno de los códigos de estado menos usados de la web, y para la mayoría de los sitios hay una herramienta mejor para el trabajo.

Definición

La RFC 9110, sección 15.4.1 describe el 300 como una oferta al usuario o al agente de usuario para elegir entre varias representaciones, cada una con su propia URL más específica. Esto se llama negociación reactiva. Si el servidor tiene una opción preferida, debería indicarla en una cabecera Location, y un navegador puede seguirla automáticamente. El cuerpo debería enumerar las alternativas, pero HTTP no define ningún formato estándar para esa lista, de modo que los clientes gestionan el 300 de forma desigual. Un 300 es almacenable en caché por defecto.

Dónde aparece

  • Algunas configuraciones de negociación de contenido que no pueden elegir una variante por sí solas.
  • API especializadas y archivos que ofrecen varios formatos de un mismo documento.
  • Servidores o plugins mal configurados, que es el motivo más probable de que encuentres uno en una auditoría.

Impacto en el SEO

La documentación de Google explica cómo trata Googlebot los códigos 301, 302, 303, 304, 307 y 308, pero no dice nada concreto sobre el 300. No se puede predecir qué URL se acabaría indexando, si es que alguna lo hace, y eso basta para evitarlo en páginas públicas.

Para el caso de uso habitual, las versiones por idioma o región, Google recomienda una URL distinta para cada versión, conectadas con hreflang, y desaconseja redirigir automáticamente a los visitantes según el idioma que cree que hablan. Una página selectora de idioma puede devolver 200 y marcarse como x-default. Para una página que se ha movido, usa 301; para un desvío temporal, 302.

Cómo comprobarlo

Rastrea la URL con el comprobador de redirecciones para ver su estado y cualquier cabecera Location, y valida la configuración de idiomas con el comprobador de hreflang. Una respuesta 300 tiene este aspecto:

HTTP/1.1 300 Multiple Choices
Location: https://www.example.com/report.html
Content-Type: text/html; charset=utf-8

<ul>
  <li><a href="/report.html">HTML version</a></li>
  <li><a href="/report.pdf">PDF version</a></li>
</ul>

Preguntas frecuentes

¿Los navegadores siguen automáticamente una redirección 300?

Pueden hacerlo si la respuesta incluye una cabecera Location con la opción preferida. Sin ella, el visitante ve la lista de opciones que el servidor haya enviado en el cuerpo.

¿Debo usar 300 para las versiones por idioma de mi sitio?

No. Da a cada idioma su propia URL, conéctalas con hreflang y deja que los visitantes cambien de idioma por sí mismos. Google desaconseja las redirecciones automáticas por idioma.

¿Cómo trata Google el código de estado 300?

La documentación de Google sobre códigos de estado no describe el 300, así que su tratamiento no es predecible. Usa 301 o 308 para los cambios permanentes y 302 o 307 para los temporales.