Código de estado de respuesta HTTP
En la World Wide Web , HTTP 301 es el código de estado de respuesta HTTP para 301 movido permanentemente . Se utiliza para redireccionamiento permanente, lo que significa que los enlaces o registros que devuelven esta respuesta deben actualizarse. La nueva URL debe proporcionarse en el campo Ubicación, incluido con la respuesta. La redirección 301 se considera una práctica recomendada para actualizar usuarios de HTTP a HTTPS .
RFC 2616 [1] establece que:
- Si un cliente tiene capacidades de edición de enlaces, debe actualizar todas las referencias a la URL de solicitud.
- La respuesta se puede almacenar en caché a menos que se indique lo contrario.
- A menos que el método de solicitud sea HEAD, la entidad debe contener una pequeña nota de hipertexto con un hipervínculo a las nuevas URL.
- Si el código de estado 301 se recibe en respuesta a una solicitud de cualquier tipo que no sea GET o HEAD, el cliente debe preguntarle al usuario antes de redirigir.
Ejemplos
Solicitud de cliente:
OBTENER /index.php HTTP / 1.1 Host : www.example.org
Respuesta del servidor:
HTTP / 1.1 301 movido permanentemente Ubicación : https://www.example.org/index.asp
Usando un archivo .htaccess
Para solucionar problemas con archivos o directorios no existentes utilizando un archivo .htaccess distribuido:
Redireccionamiento 301 /calendar.html /calendar/ Redireccionamiento 301 /not_found.html /
A continuación se muestra un ejemplo que utiliza un archivo .htaccess para redirigir una URL no segura a una dirección segura sin el "www" inicial:
RewriteEngine activado RewriteCond %{HTTPS} desactivado RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{HTTPS} en RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteEngine activado RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://example.com/$1 [R,L]
HTML estático
Una redirección de directorio personalizada, utilizando un archivo index.html:
< meta http-equiv = "refresh" content = "0; url=/" /> < p >< a href = "/" > Inicio < / a >> p >
Usando lenguajes de programación
Aquí hay un ejemplo usando Perl CGI.pm :
redirección de impresión ( "https://example.com/newpage.html" );
Aquí hay un ejemplo usando una redirección PHP :
<?php encabezado ( "Ubicación: https://example.com/newpage.html" , verdadero , 301 ); salida ;
Aquí hay una forma de redirigir usando Express.js :
aplicación . all ( "/antiguo/url" , ( req , res ) => { res . redirigir ( 301 , "/nuevo/url" ); });
Servidor de caché
Equivalentemente simple para una configuración nginx :
ubicación /antiguo/url { return 301 '/nuevo/url' ; }
Los motores de búsqueda
Tanto Bing como Google recomiendan utilizar una redirección 301 para cambiar la URL de una página tal como se muestra en los resultados del motor de búsqueda, siempre que esa URL cambie permanentemente y no se vuelva a cambiar en el corto plazo. [2] [3]
Detalles técnicos
El código de estado HTTP 301 tiene varios matices técnicos que los desarrolladores deben tener en cuenta al implementar y gestionar redirecciones:
Manejo del navegador
- Comportamiento de almacenamiento en caché : muchos navegadores web almacenan en caché los redireccionamientos 301. Esto significa que una vez que el navegador de un usuario encuentra una redirección 301, las solicitudes posteriores a la URL original se dirigirán automáticamente a la nueva URL sin contactar al servidor.
- Actualización de marcadores : los navegadores pueden actualizar los marcadores para reflejar la nueva URL después de encontrar una redirección 301.
Lado del servidor
- Apache : Apache tiene mod_alias y mod_rewrite para manejar redirecciones 301. El uso de ambos a menudo resulta en un comportamiento impredecible porque los módulos no respetan las reglas de otros módulos. [4]
Comparación con otros códigos de estado
- 302 encontrado : a diferencia de un 301, un código de estado 302 indica una redirección temporal. Es posible que los motores de búsqueda no transfieran el valor SEO a la nueva URL. [5]
- 307 Redireccionamiento temporal : como 302, pero garantiza que el método y el cuerpo no cambiarán cuando se realice la solicitud redirigida.
- 303 Ver Otros : Se utiliza cuando el resultado de un POST u otro método de solicitud no idempotente es un recurso que debe recuperarse mediante un GET.
Encabezado de ubicación
- Inclusión obligatoria : la nueva URL siempre debe proporcionarse en el campo "Ubicación" cuando se envía una redirección 301. Omitir el encabezado Ubicación confundirá a los navegadores y puede provocar un comportamiento inesperado.
- Uso de URL absoluta : si bien algunos navegadores pueden aceptar URL relativas, el uso de URL absolutas en el encabezado Ubicación es el estándar y garantiza un comportamiento coherente en todos los agentes de usuario.
Impacto en SEO
- Transferencia de valor del enlace : los motores de búsqueda generalmente transfieren la mayor parte del valor del enlace (o "link Juice") desde la URL de origen a la URL de destino para redireccionamientos 301. [6]
- Retrasos en la indexación : puede haber un retraso antes de que los motores de búsqueda reconozcan la redirección y actualicen sus índices en consecuencia.
Errores comunes
- Múltiples redirecciones : el uso de múltiples redirecciones 301 seguidas (A a B, luego B a C) puede aumentar los tiempos de carga de la página y puede diluir el valor de SEO.
- Problemas de contenido mixto : al redirigir de HTTP a HTTPS, asegúrese de que todos los recursos (imágenes, scripts, hojas de estilo) de la página también se carguen a través de HTTPS para evitar advertencias de contenido mixto.
Ver también
Referencias
- ^ Campo; et al. (junio de 1999). 10.3.2 301 Trasladado Permanentemente. IETF. pag. 61. seg. 10.3.2. doi : 10.17487/RFC2616 . RFC 2616.
- ^ "Herramienta de movimiento de sitio". Ayuda y procedimientos para webmasters de Bing .
- ^ "Redirecciones 301". Ayuda de Herramientas para webmasters de Google .
- ^ Redirección 301 para Apache .htaccess: mod_rewrite
- ^ Códigos de estado SEO y HTTP: un análisis completo
- ^ Explicación de los redireccionamientos 301: cómo impactan el SEO