301 vs. 308: redirección

301 y 308 son redirecciones permanentes; la diferencia principal es que 308 garantiza que el método HTTP (y el cuerpo que lo acompaña) se conserven en el salto. Por qué existe 308, por qué Google y Bing lo procesan igual que una 301 y cuándo conviene usarlo.

Publicado por primera vez: 2 jul 2026 · Última actualización: 8 ago 2026 · Avanzado
Idiomas
1 señal de evidencia en esta página

Una 301 y una 308 son redirecciones permanentes, y tanto Google como Bing tratan la 308 igual que la 301 para fines de rastreo, indexación y señales; la documentación de Google llama a la 308 «equivalente a 301», Gary Illyes afirma «simplemente lo fusionamos con 301», y Fabrice Canel de Bing confirma que Bing los trata igual. A nivel de protocolo, la diferencia principal es mecánica: una 308 garantiza que el cliente repita el mismo método de solicitud (un POST sigue siendo un POST y el cuerpo se envía junto con él) hacia la nueva URL, mientras que una 301 —un código de la era de HTTP/1.0— es ambigua específicamente sobre si POST se convierte en GET (la RFC no aborda PUT/DELETE de ninguna manera). Así que para una migración web normal de página a página o de sitio, la 301 sigue siendo la opción predeterminada pragmática (más antigua, más ampliamente reconocida, con mejor compatibilidad de herramientas/CDN/plugins). Usa la 308 solo cuando debas preservar un método distinto de GET: endpoints de API, URL de webhook, destinos de action de formulario, flujos POST de autenticación; e incluso entonces, el código de estado por sí solo no garantiza credenciales, cookies ni idempotencia, así que prueba el cliente real. No hay ninguna ventaja de SEO para ninguna de las dos; quien te diga que migres masivamente tus 301 a 308 para obtener una mejora en las posiciones está vendiendo un mito que los motores de búsqueda han desmentido explícitamente.

TL;DR — 301 y 308 son redirecciones permanentes, y tanto Google como Bing procesan una 308 de la misma manera que procesan una 301 — la documentación de Google dice que 308 es “equivalent to 301,” (traducción) «equivalente a 301,» Illyes dice “we just merge that with 301,” (traducción) «simplemente fusionamos eso con 301,» y Canel confirma que Bing las trata igual. A nivel de protocolo, la diferencia principal es la preservación del método: 308 (RFC 7538, 2015) garantiza mecánicamente que el cliente repita el mismo método en la nueva URL (el cuerpo viaja junto con él); 301 es de la era HTTP/1.0 y es ambiguo específicamente en cuanto a la conversión de POST a GET — el RFC no aborda PUT ni DELETE en ningún sentido, así que no generalices la advertencia de POST a esos métodos. 308 existe para ser el hermano permanente de 307 — RFC 7231 definió un código temporal que preserva el método (307) pero no uno permanente, y 308 llenó ese vacío. Usa 301 de forma predeterminada para migraciones habituales de página/sitio/HTTPS (más antigua, más ampliamente reconocida, mejor compatibilidad con CDN/CMS/plugins). Recurre a 308 solo cuando debas preservar una solicitud no GET — endpoints de API, URL de webhook, destinos de action de formulario, flujos POST de autenticación — e incluso entonces, verifica las credenciales, las cookies y la idempotencia en el cliente real en lugar de asumir que el código de estado HTTP las cubre. Ninguna es “mejor para el SEO” — ese es un mito que los motores de búsqueda han desmentido explícitamente.

La diferencia semántica es lo primero

Tanto el 301 como el 308 indican a los motores de búsqueda lo mismo sobre la permanencia: el recurso se ha movido de forma permanente, y el destino debería convertirse en canónico. En lo que difieren es en una garantía mecánica y específica sobre cómo el cliente vuelve a emitir la solicitud.

  • 301 (Moved Permanently) es el código de redirección permanente original, que data de la era de HTTP/1.0. Algo crucial es que siempre fue ambiguo en cuanto a si el método de solicitud debe preservarse. En la práctica, los navegadores y otros clientes históricamente han convertido un POST en un GET al seguir una redirección 301 — lo cual está bien para una página simple, pero rompe silenciosamente cualquier cosa que dependa del método o del cuerpo de la solicitud.
  • 308 (Permanent Redirect) es la versión estricta. Garantiza que el cliente repita exactamente el mismo método y cuerpo hacia la nueva URL. Un POST sigue siendo un POST; la carga útil se traslada junto con él.

La formulación en una frase que yo le daría a alguien: un 308 es un 301 que también garantiza que el navegador no cambiará silenciosamente tu POST por un GET. Evidence for this claim RFC 9110 defines both 301 and 308 as permanent redirects; 308 forbids changing the request method, while 301 permits POST-to-GET rewriting for historical reasons. Scope: HTTP semantics for 301 and 308 responses. Confidence: high · Verified: IETF: RFC 9110 §§15.4.2, 15.4.9 IETF: RFC 7538 §3 — 308 Permanent Redirect

Por qué existe el 308: el “307 permanente” que faltaba

Esta es la parte que casi nadie explica, y es la forma más clara de entender toda la comparación. Se trata de un vacío en la especificación.

Los códigos de redirección modernos se organizan en una cuadrícula de temporal/permanente y flexible/estricto:

TemporalPermanente
El método puede cambiar (laxo)302301
El método se conserva (estricto)307308

RFC 7231 definió 307 — una redirección temporal que conserva el método — como la contraparte estricta del 302 laxo y ambiguo. Pero nunca definió un equivalente permanente que conserve el método. Existía un código temporal estricto y ningún código permanente estricto. RFC 7538 (abril de 2015) añadió 308 específicamente para llenar ese vacío: es a 301 lo que 307 es a 302. Si has leído la comparación entre 302 y 307 en este conjunto, 301 vs. 308 es exactamente la misma relación una fila más arriba — laxo-permanente vs. estricto-permanente.

301 es anterior a todo este marco. Proviene de HTTP/1.0, antes de que se formalizara el concepto de “conservar el método”, lo que explica exactamente por qué es ambiguo y por qué 308 tuvo que inventarse en lugar de simplemente aclararse.

Qué significa “método y cuerpo conservados” en la práctica

Para la gran mayoría de las redirecciones — alguien hace clic en un enlace, su navegador emite un GET, el servidor lo envía a otro lugar — no hay ninguna diferencia práctica. Los navegadores modernos conservan el método GET en un 301 sin problemas. La distinción solo afecta cuando la solicitud no es un GET simple:

Tipo de solicitudCon un 301Con un 308
GET (una página normal)Se sigue como GET (en la práctica, es correcto)Se sigue como GET
POST (envío de formulario, API)Puede convertirse silenciosamente en GET, con pérdida del cuerpoSe repite como POST, con el cuerpo intacto
PUT / DELETE (API)No está documentado en los RFC — lo permitido históricamente es solo POST→GET, así que trátalo como algo específico del cliente y no verificadoSe preserva el método (la regla de seguimiento automático de 308 no es específica de POST)

Así que el riesgo con un 301 se centra claramente en POST y los cuerpos de solicitud — formularios, API, webhooks, flujos de autenticación. “A 301 will always break my form” (traducción) «Un 301 siempre romperá mi formulario» es una exageración; un GET simple es seguro. La excepción histórica de la especificación para 301 es específicamente POST→GET; no documenta el comportamiento de PUT ni DELETE, así que no asumas el manejo de esos métodos por parte de ninguno de los dos códigos sin probar el cliente real. En lo que la especificación es clara: 308 prohíbe que el cliente cambie cualquier método que repita — esa regla no se limita a POST. Lo que se garantiza aquí es la preservación del método; no promete por separado que las cabeceras, cookies, credenciales o la transacción más amplia sobrevivan intactas — eso es específico del cliente y de la integración, y vale la pena probarlo en todo lo que importe (consulta la lista de verificación a continuación).

¿Google trata de forma diferente 301 y 308 para SEO? No.

Esta es la rara pregunta sobre redirecciones en la que la documentación, los Googlers y Bing están todos de acuerdo — y han estado de acuerdo de manera constante durante años.

La documentación de códigos de estado HTTP de Google sitúa 301 y 308 en el mismo grupo. La fila de 301: “Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (traducción) «Google sigue la redirección y los sistemas de Google usan la redirección como una señal fuerte de que el destino de la redirección debería ser procesado.» La fila de 308 es una sola línea: “Equivalent to 301.” (traducción) «Equivalente a 301.» Esa es la declaración más sólida y citable de la respuesta — la propia documentación de Google equipara literalmente ambos. Evidence for this claim Google treats 308 as equivalent to 301 for Search while advising sites to use the semantically appropriate status code. Scope: Google Search processing; client behavior still differs when method preservation matters. Confidence: high · Verified: Google: HTTP status codes and Search

La guía de redirecciones lo refuerza, comenzando con “The 301 and 308 status codes mean that a page has permanently moved to a new location” (traducción) «Los códigos de estado 301 y 308 significan que una página se ha movido permanentemente a una nueva ubicación» y luego no establece ninguna distinción adicional entre ellos en ninguna parte.

Los Googlers han dicho lo mismo extraoficialmente durante años, mucho antes de que se escribiera en la documentación:

  • Gary Illyes (2021): en un hilo sobre si Google trata 308 como 301, dijo que Google “just merge[s] that with 301 so we really don’t care.” (traducción) «simplemente fusiona eso con 301, así que realmente no nos importa.» El artículo de Barry Schwartz lo presentó como el momento en que esto se volvió oficial: “Three years later it was added to the official Google documents that Google treats 308 redirects like 301 redirects — so now it is official.” (traducción) «Tres años después se añadió a los documentos oficiales de Google que Google trata las redirecciones 308 como redirecciones 301 — así que ahora es oficial.»
  • John Mueller (2018): tres años antes — “If you use it [a 308 redirect] like a 301 we’ll treat it as such.” (traducción) «Si la usas [una redirección 308] como una 301, la trataremos como tal.» Así que esta ha sido la postura informal de Google desde mucho antes de que los documentos se pusieran al día.

Sin embargo, hay un matiz importante en los documentos de Google, y es la tesis de este artículo. Justo después de equiparar los códigos, Google añade: “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (traducción) «Google los procesa de la misma manera, pero advierte que su semántica no es idéntica: conviene escoger el estado adecuado para que también puedan aprovecharlo otros clientes, como lectores electrónicos y buscadores alternativos.» En otras palabras: elige el código por corrección e interoperabilidad, no por SEO — porque al SEO no le importa.

¿Bing trata 301 y 308 de forma diferente? Tampoco.

La mayoría de los artículos sobre este tema son solo de Google, lo que deja un vacío. Fabrice Canel de Bing respondió directamente a la pregunta en septiembre de 2024, en respuesta a alguien que preguntaba si Bing trata un 308 permanente igual que un 301: “Bing treats 308 redirects the same as 301 redirects.” (traducción) «Bing trata las redirecciones 308 igual que las redirecciones 301.» Schwartz señaló que esto coincidía con lo que Google había dicho en 2021.

Así que ambos motores principales han dejado constancia: 308 es funcionalmente idéntico a 301 para rastreo, indexación y consolidación de señales. No hay ningún motor que trate 308 como superior para el SEO.

El mito que hay que desmentir: “308 is better for SEO / migrate all your 301s”

(traducción) «308 es mejor para el SEO / migra todos tus 301s»

Voy a ser directo con esto porque las páginas de menor calidad siguen insinuándolo. No hay ningún beneficio de SEO al elegir 308 en lugar de 301 para una redirección típica, y no hay razón para migrar masivamente tus redirecciones 301 existentes a redirecciones 308. Esta no es mi opinión; es la postura declarada de los motores de búsqueda:

  • La documentación de Google dice que 308 es “equivalent to 301.” (traducción) «equivalente a 301
  • Illyes: “we just merge that with 301.” (traducción) «simplemente lo fusionamos con 301.»
  • Canel: Bing “treats 308 redirects the same as 301 redirects.” (traducción) «trata las redirecciones 308 igual que las redirecciones 301.»

Cambiar masivamente 301→308 no te aporta ningún beneficio en las posiciones e introduce riesgo en cualquier herramienta heredada o de edge que solo reconoce sin problemas 301/302 (más sobre eso a continuación). Es pura rotación.

Vale la pena contrastar esto con un mito genuinamente discutido: la vieja afirmación “301s lose/dilute PageRank” (traducción) «los 301 pierden/diluyen PageRank». Esa aún resurge y ha sido desmentida por Google repetidamente. Pero observa la diferencia — el mito de la dilución de PageRank es Google corrigiendo un concepto erróneo, mientras que la equivalencia entre 301 y 308 es Google, Bing y la documentación todos afirmando lo mismo de manera consistente desde 2018. Esta es una cuestión zanjada, no disputada. (La historia completa de PageRank está en la comparación entre 301 y 302 en este grupo.)

Cuándo 308 es la opción técnicamente correcta

Recurre a 308 cuando perder el método de la solicitud o el cuerpo rompería la funcionalidad (no las posiciones):

  • Endpoints de API que estás reubicando, donde los clientes emiten POST/PUT/DELETE.
  • URL de webhook — el remitente envía por POST una carga útil que no puedes permitirte perder.
  • Destinos de action del formulario — el <form> envía datos que deben llegar intactos a la nueva URL.
  • Flujos POST de autenticación / inicio de sesión donde las credenciales o tokens viajan en el cuerpo.

Para POST específicamente, un 301 conlleva el riesgo de que el cliente convierta la solicitud en un GET y deje abandonado el cuerpo; 308 prohíbe esa conversión. Para PUT/DELETE, la RFC no especifica el comportamiento de 301 en un sentido u otro, así que no lo asumas — la regla de preservación del método de 308 todavía se aplica independientemente de cuál sea el método.

Antes de cambiar una API, un webhook o un flujo de autenticación, el código de estado por sí solo no garantiza que todo sobreviva al salto — vale la pena comprobarlo como parte del mismo cambio:

  • Credenciales, cookies y encabezados de autenticación. Ninguno de los dos códigos hace una promesa aquí; prueba el cliente real (navegador, SDK, remitente de webhook) en lugar de asumir que se transmiten automáticamente.
  • Comportamiento entre orígenes. Una redirección que cruza orígenes puede cambiar lo que un navegador o cliente fetch enviará; verifícalo con el llamante real, no solo con un curl manual.
  • Idempotencia y efectos secundarios duplicados. Si la solicitud repetida no es idempotente (un webhook que crea un registro, un POST de pago), un cliente que reintenta después de una redirección puede ejecutarla dos veces. Confirma que el destino maneja una repetición de forma segura antes de confiar en que 308 “simplemente funcione”.
  • Implementa por etapas y revierte teniendo en cuenta la caché. Las respuestas 301 y 308 son almacenables en caché de forma heurística, por lo que un cliente o intermediario que ya haya almacenado en caché la respuesta antigua puede seguir usándola después de que cambies el código; prueba con un cliente nuevo y con uno que haya accedido a la URL antes de tu cambio, y ten un plan de reversión que tenga en cuenta ese estado almacenado en caché en lugar de asumir que el cambio es instantáneo.

Cuando 301 sigue siendo la opción predeterminada pragmática

Para todo lo que sea un GET simple —que es la mayor parte de lo que los SEO redirigen—, 301 sigue siendo la opción predeterminada razonable:

  • Cambios estándar de página/URL y movimientos de contenido.
  • Cambios de dominio y fusiones de sitios.
  • Migraciones de HTTP → HTTPS.
  • Consolidación de variantes de www/no-www o de trailing-slash.

¿Por qué usar como predeterminado el código más antiguo cuando 308 es “más estricto”? Tres razones prácticas:

  1. Mayor reconocimiento. 301 es anterior a 308 por dos décadas y es reconocido por la abrumadora mayoría de los navegadores, los servidores proxy, las CDN, los rastreadores y las herramientas de analítica en uso actual y heredado. 308 tiene ahora más de una década y es ampliamente compatible, pero la larga cola de clientes heredados y herramientas de edge es menos cierta: no asumas que cada herramienta de tu stack reconoce este código sin comprobarlo.
  2. Realidad de las herramientas. Muchas herramientas comunes usan de forma predeterminada —o solo exponen de manera limpia— 301/302. Los complementos de redirección de WordPress, los generadores de reglas de Cloudflare y algunas plataformas serverless/CDN se apoyan en 301/302, y unas pocas emitirán un 302/307 independientemente de lo que creas que configuraste. Para un propietario de sitio no técnico, “lo que mi plataforma admite realmente” suele ser el verdadero factor decisivo.
  3. Nada que ganar. Dado que Google y Bing procesan los dos códigos de la misma manera para el rastreo y la indexación, no hay ventaja en recurrir al código menos ampliamente compatible para un movimiento de página simple.

La regla general: GET simple → 301; solicitud que no sea GET que debes preservar → 308.

Cómo implementar cada uno

La sintaxis es casi idéntica — solo cambias el número.

Apache (.htaccess)

# 301 — permanent, for a normal page move
Redirect 301 /old-page /new-page

# 308 — permanent + method-preserving, for an API/form endpoint
RewriteEngine On
RewriteRule ^old-api/(.*)$ /new-api/$1 [R=308,L]

nginx

# 301
location = /old-page {
    return 301 /new-page;
}

# 308 — preserves POST body to the API
location = /old-api {
    return 308 /new-api;
}

Una advertencia que se aplica a ambos: algunos CDN, plataformas de edge y plugins de CMS no respetarán un 308 que configures y emitirán un 301/302/307 en su lugar. Si realmente te importa preservar el método, verifica la respuesta que realmente estás enviando (haz curl a la URL y lee la línea de estado) en lugar de confiar en la configuración. La sintaxis de las directivas también varía entre versiones de servidor y frameworks — consulta la documentación de tu versión actual de Apache/nginx (o la de tu framework, si es el que genera la redirección) en lugar de asumir que los fragmentos anteriores están exactamente vigentes byte por byte para tu configuración.

Una palanca que supera la elección entre 301 y 308: longitud de la cadena

Sea cual sea el código que elijas, la palanca de rendimiento más importante es mantener las redirecciones cortas. Google sigue hasta aproximadamente 10 saltos de redirección antes de detenerse, y cada salto adicional es latencia y una posibilidad de que se filtren señales. Un único salto limpio con el código correcto supera una cadena de saltos “técnicamente correctos”. Redirige directamente al destino final.

Dónde encaja esto

301 y 308 son los dos códigos de redirección permanente, y cada uno tiene su propio análisis detallado en este clúster junto con sus equivalentes temporales (302 y su hermano estricto, 307) y el otro miembro de los 3xx, 303. Las comparaciones se organizan en una cuadrícula: 301 frente a 302 es permanente frente a temporal, 302 frente a 307 es el par temporal flexible frente a estricto, y esta — 301 frente a 308— es el par permanente flexible frente a estricto. Ten cuidado también con los riesgos operativos: las cadenas de redirecciones y los bucles de redirección. Para ver toda la familia de respuestas del servidor, consulta el centro de códigos de estado HTTP; el tipo de redirección también es una de las señales de canonicalización tratadas en canonicalización.

Try it live

These are real endpoints on this site — not a simulation. Hit them from the button, open them in a new tab, or curl -i them from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗
Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.