internet explorer - redirectmatch - Comportamiento del navegador web del cliente al manejar la redirección 301
redireccionar dominio htaccess (2)
Puede utilizar esta solución :
Haga 302
redireccionamientos para usuarios y 301
solo para motores de búsqueda. En el lado del servidor, solo compruebe el agente de usuario. Si es un bot, haz un redireccionamiento 301
. De lo contrario, haz 302
.
No es el "camino de oro", pero funciona muy bien.
El RFC parece sugerir que el cliente debe almacenar en caché de forma permanente la respuesta: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
10.3.2 301 Movido permanentemente
Al recurso solicitado se le asignó un nuevo URI permanente y cualquier referencia futura a este recurso DEBERÍA usar uno de los URI devueltos. Los clientes con capacidades de edición de enlaces deben volver a vincular automáticamente las referencias al URI de solicitud a una o más de las nuevas referencias devueltas por el servidor, cuando sea posible. Esta respuesta es cacheable a menos que se indique lo contrario.
El nuevo URI permanente DEBE ser dado por el campo Ubicación en la respuesta. A menos que el método de solicitud fuera HEAD, la entidad de la respuesta DEBE contener una breve nota de hipertexto con un hipervínculo a la nueva URI (s).
Si el código de estado 301 se recibe en respuesta a una solicitud que no sea GET o HEAD, el agente del usuario NO DEBE redirigir la solicitud automáticamente a menos que el usuario pueda confirmarla, ya que esto podría cambiar las condiciones bajo las cuales se emitió la solicitud.
Note: When automatically redirecting a POST request after receiving a 301 status code, some existing HTTP/1.0 user agents will erroneously change it into a GET request.
Me resulta difícil encontrar documentación concreta del navegador para cualquier navegador importante que indique cómo manejan estos.
Comencé a buscar en el código fuente de Firefox, pero rápidamente me perdí.
¿Es cierto el siguiente escenario para los navegadores (si los hay), y hay documentación definitiva para Firefox o IE que dice eso ?:
Primera vez alrededor:
- 1.1: El usuario ingresa el enlace al sitio A, o hace clic en un enlace dirigido al Sitio A
- 1.2: El navegador interpreta el enlace en el Sitio A, por primera vez, sin caché. Envía GET al sitio A.
- 1.2: El sitio A responde con 301 Redireccionamiento al sitio B
- 1.3: El navegador envía GET al sitio B.
En cualquier momento posterior:
Realicé algunas pruebas y encontré que algunos navegadores guardan en caché el resultado 301:
Caches 301 result and skips contacting old address in future? Internet Explorer 7 no Firefox 3.0 no Chrome 4.0 yes Opera 10.01 yes for google.com, no for www.rnhart.net
Como he probado
Usé los siguientes dos resultados 301 para probar con:
- google.com devuelve un 301 a www.google.com
- www.rnhart.net devuelve un 301 a rnhart.net
Comencé un servidor proxy en mi propia computadora ( Proxomitron Naoko 4.2 con todos los filtros desactivados). En cada navegador, establezco la configuración del proxy para que apunte a mi propia computadora. Limpié el caché del navegador, luego visité la dirección anterior varias veces y miré en la ventana de registro del servidor proxy para ver qué solicitudes había realizado el navegador.
La primera vez que se visita la dirección anterior, el registro de proxy muestra la solicitud de dirección anterior, la respuesta 301 y la solicitud de dirección nueva. Si se vuelve a visitar la dirección anterior, el registro mostró el mismo conjunto de solicitudes (el 301 no se almacenó en caché) o solo mostró la nueva solicitud de dirección (el 301 se almacenó en caché).
Probé ingresando la dirección anterior en el cuadro de direcciones, accediendo a la dirección anterior desde un marcador y accediendo a la dirección anterior desde un enlace en una página. Cada navegador funcionó de la misma manera, sin importar cómo se accedió a la dirección.
[Encontré esta pregunta al investigar una pregunta similar de superusuario: ¿Los navegadores cambian las direcciones URL de los marcadores guardados en respuesta a la redirección 301? ]