Un 301 (Moved Permanently) indica a navegadores y buscadores que la URL antigua se ha sustituido para siempre, así que deben usar e indexar la nueva. Un 302 (Found) dice que el contenido está en otra URL solo por ahora, de modo que la antigua debe seguir en uso. Usa un 301 para cambios de dominio, migraciones a HTTPS y URL reestructuradas; usa un 302 para movimientos a corto plazo, como páginas de mantenimiento o pruebas.
De un vistazo
| Código | Nombre | Significado | Método al seguirlo |
|---|---|---|---|
| 301 | Moved Permanently | Permanente | Puede cambiar POST a GET |
| 302 | Found | Temporal | Puede cambiar POST a GET |
| 303 | See Other | Ve a buscarlo con GET | Siempre GET |
| 307 | Temporary Redirect | Temporal | Mismo método y cuerpo |
| 308 | Permanent Redirect | Permanente | Mismo método y cuerpo |
301 y 302 en la práctica
| 301 | 302 | |
|---|---|---|
| Caché del navegador | Se guarda de forma agresiva | Normalmente no se guarda |
| Buscadores | Tratan la nueva URL como la definitiva | Mantienen indexada la URL antigua |
| Uso típico | HTTP a HTTPS, cambios de dominio o URL | Mantenimiento temporal, pruebas A/B, enrutamiento por ubicación |
| Coste de un error | Difícil de deshacer por la caché | Los buscadores pueden no pasar a la nueva URL |
Comprueba qué hace realmente una URL con el rastreador de cadena de redirecciones HTTP, que lista cada salto y su código de estado, y consulta los códigos que no conozcas en la búsqueda de códigos de estado HTTP. Para escribir las reglas de redirección de un servidor Apache, usa el generador de redirecciones .htaccess.
¿Cuál deberías elegir?
- El contenido se ha movido para siempre: 301 (o 308 para peticiones que no sean GET).
- Cambio breve o condicional: 302 (o 307 para conservar el método).
- Tras enviar un formulario, mandar a una página de resultados: 303.
- Si dudas: empieza con un 302 y cambia a un 301 cuando estés seguro, porque las redirecciones permanentes se guardan en caché.
- Evita las cadenas: apunta las URL antiguas directamente al destino final, no a través de varias redirecciones.
La lista completa de códigos está en Guía rápida de códigos de estado HTTP y Redirección define el término.