¿Se supone que el cliente se comporte de manera diferente? ¿Cómo?Redirección HTTP: 301 (permanente) vs. 302 (temporal)
Respuesta
El estado 301 significa que el recurso (página) se mueve permanentemente a una nueva ubicación. El cliente/navegador no debe intentar solicitar la ubicación original, sino usar la nueva ubicación a partir de ahora.
El estado 302 significa que el recurso se encuentra temporalmente en otro lugar, y el cliente/navegador debe continuar solicitando la url original.
Gracias. ¿Significa esto que si uso un redireccionamiento 301 (permanente), el cliente puede decidir no recuperar nunca más la ubicación anterior y, en su lugar, usar siempre directamente la nueva URL? – flybywire
¡Exactamente! De hecho, de acuerdo con las especificaciones, el cliente DEBERÍA ir siempre a la nueva ubicación. –
¿Tiene esto algún efecto en los motores de búsqueda que recuerdan ciertas páginas de su sitio que ahora no están vinculadas? – rybo111
301 es que al recurso solicitado se le ha asignado un nuevo URI permanente y cualquier futura referencia a este recurso DEBE hacerse con uno de los URI devueltos. 302 es que el recurso solicitado reside temporalmente bajo un URI diferente. Dado que la redirección puede modificarse ocasionalmente, el cliente DEBERÍA continuar utilizando el URI de solicitud para futuras solicitudes. Esta respuesta es solo cachable si está indicada por un campo Cache-Control o Expires header .
Entonces 301 tiene sentido, pero me está costando crear un buen ejemplo de uso para ** 302 **. –
@ BobStein-VisiBone por ejemplo de la redirección 302: cree un archivo old.php con el código ' Php header (" location: http://example.com/new.php "); ?> 'y archivo new.php -' php echo 'Soy nuevo'; ?> 'y vaya al [enlace] (http://example.com/old.php). Se redirigirá y mostrará el texto "Soy nuevo". Luego reemplace el código en old.php por ' Php echo 'I'm old'; ?> 'y también vaya al [enlace] (http://example.com/old.php). Verás el texto "Soy viejo". Si ha realizado la redirección 301 en old.php, habría visto el texto "Soy nuevo" incluso después de los cambios en el código de old.php. – Apostle
@ BobStein-VisiBone Tengo una página que está en desuso y no se puede mostrar. Necesitamos hacer una nueva página pero no estaremos listos por un tiempo. Utilizamos una redirección temporal a una página existente que nos resulta útil para los visitantes. Una vez que se crea la página nueva, usaremos una redirección permanente a ella. – EddieC
Parcialmente 301 vs 302 es importante para la indexación en los motores de búsqueda, ya que sus rastreadores tener esto en cuenta y transferencia de PageRank cuando se utiliza 301.
Ver Peter Lee's answer para más detalles.
Cuando una araña de motor de búsqueda encuentra el código de estado 301 en el encabezado de respuesta de una página web, entiende que esta página web ya no existe, busca la cabecera de ubicación en respuesta elige la nueva URL y reemplaza la URL indexada por la nueva y también transferir pagerank.
Así que el motor de búsqueda actualiza toda URL indexada que ya no existe (301 encontrados) con la nueva URL, esto retendrá el tráfico de su página web anterior y lo desviará al nuevo (no perderá el tráfico de la página anterior))
Navegador: si un navegador encuentra 301 código de estado entonces se almacena en caché la asignación de la dirección URL anterior con la nueva dirección URL, el cliente/navegador no intentará solicitar la ubicación original pero el uso de la nueva ubicación de ahora en adelante a menos que el caché está despejado
Cuando una araña motor de búsqueda encuentra 302 de estado de una página web, sólo se volverá a dirigir temporalmente a la nueva ubicación y rastreo tanto de las páginas. La URL de página web anterior aún existe en la base de datos del motor de búsqueda y siempre intenta solicitar la ubicación anterior y rastrearla. El cliente/navegador aún intentará solicitar la ubicación original.
Lea más sobre cómo implementarlo en asp.net C# y cuál es el impacto en los motores de búsqueda - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet-csharp-Implementation.html
upvote para destacar manualmente con el mouse/dispositivo de entrada. – ahnbizcad
Mucho mejor respuesta IMO. Más claro sobre qué sucede exactamente en un nivel técnico, que es lo que la mayoría de la gente probablemente venga aquí. – DarkNeuron
301 redirecciones se almacenan en caché indefinidamente (al menos por algunos navegadores).
Esto significa que, si configura un 301, visite esa página, no solo se redirigirá, sino que se redireccionará la redirección.
Cuando visita esa página otra vez, su navegador * ni siquiera se molesta en solicitar esa URL, solo va al destino de redirección en caché.
La única manera de deshacer un 301 para un visitante con esa redirección en Caché, es volver a redireccionar a la URL original **. En ese caso, el navegador notará el bucle, y finalmente realmente solicitará la URL ingresada.
Obviamente, esa no es una opción si decidió 301 a Facebook o cualquier otro recurso que no esté completamente bajo control.
Desafortunadamente, muchos proveedores de alojamiento ofrecen una función en su interfaz de administración llamada simplemente "Redirección", que hace una redirección 301. Si está utilizando esto para redirigir temporalmente su dominio a Facebook como próxima página, básicamente está jodido.
* al menos Chrome y Firefox, según How long do browsers cache HTTP 301s?. Sólo probado con Chrome 45. Editar: Safari 7.0.6 en Mac también almacena en caché, un reinicio del navegador no ayudó (. Enlace dice que en Safari 5 en Windows lo hace ayuda)
** Probé Javascript window.location = ''
, porque sería la solución que podría aplicarse en la mayoría de los casos; no funciona. Resulta en un Loop infinito no detectado. Sin embargo, php header('Location: new.url')
rompe el ciclo
Conclusión: solo use 301 si está absolutamente seguro de que nunca volverá a usar esa URL. Por lo general, nunca en el directorio raíz (example.com/)
El problema principal con 301 es que el navegador guardará en caché la redirección incluso si deshabilitó la redirección desde el nivel del servidor.
Siempre es mejor usar 302 si habilita la redirección para una ventana de mantenimiento breve.
- 1. .htaccess r = 301 vs 302 r =
- 2. 301 o 302 redirección con PHP
- 3. Redirección permanente de http a https página
- 4. ¿No debería [RequireHttps] en MVC hacer una redirección permanente 301? ¿Por qué hacer un 302 (malo para el SEO?)
- 5. 301 redirección: ¿Por qué conexión cerrar?
- 6. Redirección permanente de Github gh-pages
- 7. 301 Redirección para IIS
- 8. audio HTML5 con una redirección HTTP 302 en Chrome
- 9. Http Redirect 302
- 10. Cómo escuchar los códigos de estado de redirección 301/302 en solicitudes de imágenes entre dominios?
- 11. HttpServletResponse sendRedirect permanente
- 12. ¿Cómo se hace una ruta de redirección permanente de 301 en ASP.Net MVC
- 13. redirección de URL en Java retorno 302 en lugar de 301
- 14. ¿Una redirección 302 mantendrá la cadena del referer?
- 15. ¿La redirección 301 siempre conserva la referencia?
- 16. ¿Cómo funciona HTTP 302?
- 17. PHP 301 ¿Redirigir, Imposible?
- 18. Django devolviendo HTTP 301?
- 19. .htaccess 301 redirección de página única
- 20. HTTP Error 302 usando uploadify
- 21. 301 redirecciones en Grails
- 22. Tabla vs Tabla temporal Rendimiento
- 23. 301/302 redirigir desde la raíz de barra oblicua a la página de inicio específica
- 24. redirección temporal a la página de mantenimiento
- 25. http a https redirección
- 26. Devolución de una redirección 301 desde una acción de controlador
- 27. Redirección de entrada temporal en Bash
- 28. Cómo reenviar encabezados en la redirección HTTP
- 29. 301/302 Redirigir no funciona en Android (funciona de manera diferente en versiones diferentes)
- 30. Configuración de Amazon Route 53 y configuración de redirección 301
[RFC 2616 - Códigos de estado HTTP] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) Podría repetir todo allí, pero lo dice claramente;) – Tiemen
Vale la pena teniendo en cuenta que la especificación también proporciona códigos de estado 303 y 307 para redirecciones temporales más matizadas. –