¿Se supone que el cliente se comporta de manera diferente? ¿Cómo?
¿Se supone que el cliente se comporta de manera diferente? ¿Cómo?
Respuestas:
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 utilizar 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.
Cuando una araña del 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 el encabezado de ubicación en respuesta, elige la nueva URL y reemplaza la URL indexada con la nueva y también transfiere el pagerank .
Por lo tanto, el motor de búsqueda actualiza todas las URL indexadas que ya no existen (301 encontradas) con la nueva URL, esto retendrá el tráfico de su página web anterior, el pagerank y lo desviará a la nueva (no perderá el tráfico de la página web anterior).
Navegador: si un navegador encuentra el código de estado 301, almacena en caché la asignación de la URL anterior con la nueva URL, el cliente / navegador no intentará solicitar la ubicación original, sino que usará la nueva ubicación de ahora en adelante a menos que se borre la memoria caché.
Cuando una araña del motor de búsqueda encuentra el estado 302 de una página web, solo redirigirá temporalmente a la nueva ubicación y rastreará ambas páginas. La URL de la página web anterior todavía existe en la base de datos del motor de búsqueda y siempre intenta solicitar la ubicación anterior y rastrearla. El cliente / navegador seguirá intentando 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
En su mayoría, 301 vs 302 es importante para la indexación en los motores de búsqueda, ya que sus rastreadores tienen esto en cuenta y transfieren PageRank cuando usan 301.
Vea la respuesta de Peter Lee para más detalles.
301 es que al recurso solicitado se le ha asignado un nuevo URI permanente y cualquier referencia futura a este recurso debe hacerse utilizando uno de los URI devueltos.
302 es que el recurso solicitado reside temporalmente bajo un URI diferente.
Dado que la redirección puede ser alterada ocasionalmente, el cliente debe continuar usando el URI de solicitud para futuras solicitudes.
Esta respuesta solo se puede almacenar en caché si se indica mediante un campo de encabezado Cache-Control o Expires.
<?php header("location: http://example.com/new.php"); ?>
y el archivo new.php, <?php echo 'I am new'; ?>
y vaya al enlace . Allí redirigirá y mostrará el texto "Soy nuevo". Luego reemplace el código en old.php <?php echo 'I am old'; ?>
y también vaya al enlace . Verá 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.
webcomic.com/latest
y se redirige a webcomic.com/some-comic-title
un 301, el navegador siempre redirigirá a "some-comic-title". Incluso cuando el próximo cómic ha sido publicado y "último" ahora redirige a "otro título de cómic" ... Aquí es donde un 302 sería mejor.
Las redirecciones 301 se almacenan en caché de forma indefinida (al menos por algunos navegadores).
Esto significa que si configura un 301, visite esa página, no solo será redirigido, sino que esa redirección se almacena en caché.
Cuando vuelves a visitar esa página, tu navegador * ni siquiera se molesta en solicitar esa URL, solo va al objetivo de redireccionamiento en caché.
La única forma de deshacer un 301 para un visitante con esa redirección en la caché es redirigir de nuevo a la URL original **. En ese caso, el navegador notará el bucle y finalmente solicitará realmente 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á usando esto para redirigir temporalmente su dominio a Facebook como una página próximamente, básicamente está jodido.
* al menos Chrome y Firefox, de acuerdo con ¿Por cuánto tiempo los navegadores almacenan en caché los HTTP 301? . Solo lo probé con Chrome 45. Editar: Safari 7.0.6 en Mac también se almacena en caché, un reinicio del navegador no ayudó (Link dice que en Safari 5 en Windows sí 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 bucle infinito no detectado. Sin embargo, PHP header('Location: new.url')
rompe el ciclo
En pocas palabras : 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 principal problema con 301 es que el navegador almacenará en caché la redirección incluso si la desactivó desde el nivel del servidor.
Siempre es mejor usar 302 si habilita la redirección para una breve ventana de mantenimiento.