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 Moved Permanently . 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 fuera HEAD, la entidad debe contener una pequeña nota de hipertexto con un hipervínculo a las nuevas URL.
- Si se recibe el código de estado 301 en respuesta a una solicitud de cualquier tipo que no sea GET o HEAD, el cliente debe preguntar al usuario antes de redirigir.
Ejemplos
Solicitud del cliente:
GET /index.php HTTP / 1.1 Host : www.ejemplo.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 inexistentes utilizando un archivo .htaccess distribuido:
Redirección 301 /calendar.html /Calendar/ Redirección 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] Condición de reescritura %{HTTPS} en Condición de reescritura %{HTTP_HOST} ^www\.(.*)$ [NC] Regla de reescritura ^(.*)$ https://%1/$1 [R=301,L] RewriteEngine en 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 >
Utilizando lenguajes de programación
A continuación se muestra un ejemplo que utiliza Perl CGI.pm :
redirección de impresión ( "https://example.com/newpage.html" );
A continuación se muestra un ejemplo que utiliza una redirección PHP :
<?php header ( "Ubicación: https://example.com/newpage.html" , true , 301 ); exit ;
A continuación se muestra una forma de redirigir usando Express.js :
aplicación.todos ( "/url/antigua" , ( req , res ) = > { res.redirect ( 301 , " /url/nueva" ) ; } );
Servidor de almacenamiento en caché
Equivalentemente simple para una configuración nginx :
ubicación /URL/antigua { return 301 '/URL/nueva' ; }
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 la URL cambie de forma permanente y no esté previsto que vuelva a cambiar en un futuro próximo. [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 administrar redirecciones:
Manejo del navegador
- Comportamiento de almacenamiento en caché : muchos navegadores web almacenan en caché las redirecciones 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 comunicarse con el 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 suele generar un comportamiento impredecible porque los módulos no respetan otras reglas de módulos. [4]
Comparación con otros códigos de estado
- 302 Found : 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 transmitan el valor SEO a la nueva URL. [5]
- 307 Redirección temporal : como 302, pero garantiza que el método y el cuerpo no se modificará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 de ubicación confundirá a los navegadores y puede generar un comportamiento inesperado.
- Uso de URL absoluta : si bien algunos navegadores pueden aceptar URL relativas, el uso de URL absolutas en el encabezado de ubicación es el estándar y garantiza un comportamiento consistente en todos los agentes de usuario.
Impacto en el SEO
- Transferencia de equidad de enlace : los motores de búsqueda generalmente transfieren la mayor parte de la equidad de enlace (o “link juice”) de la URL de origen a la URL de destino para las redirecciones 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
- Redirecciones múltiples : el uso de múltiples redirecciones 301 en sucesión (A a B, luego B a C) puede generar mayores 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 mediante HTTPS para evitar advertencias de contenido mixto.
Véase también
Referencias
- ^ Fielding; et al. (junio de 1999). 10.3.2 301 Moved Permanently. IETF. pág. 61. sec. 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 exhaustivo
- ^ Explicación de las redirecciones 301: cómo afectan al SEO