2010-06-11 13 views
11

Nuestra aplicación asp se está mudando a un nuevo servidor y quiero implementar una redirección permanente de url. Soy consciente de seguir dos enfoques, necesito entender cuál de los usuarios sobre el otro y cuándo.¿cuál es la diferencia entre response.redirect y el estado de la respuesta 301 redirects in asp?

Opción 1:

<%@ Language=VBScript %><% Response.Redirect "http://www.example.com" %> 

Opción 2:

<%@ Language=VBScript %><% Response.Status="301 Moved Permanently" 
    Response.AddHeader "Location","http://www.example.com/" %> 

Gracias,

Nikhil.

Respuesta

1

Response.Redirect() (y el método equivalente RedirectPermanent() para un 301) hace muchas cosas detrás de escena. Null comprueba la cadena URL solicitada, la codifica, llama a los controladores de eventos para el evento Redirecting si los hay, y finalmente llama al Response.End(), que vacía la respuesta de vuelta al navegador y anula el hilo actual.

En última instancia, probablemente no notarás mucha diferencia entre configurar los encabezados manualmente y llamar a redirigir.

Por cierto, hay más (y mejores) opciones para manejar esto. IIS tiene un URL Rewriting module, que le permitiría redirigir una URL determinada sin llamar a su página como un controlador de solicitudes, y administrar sus URL centralmente para una administración más sencilla de los motores de búsqueda.

+0

Esto no es correcto. Ver mi respuesta para más detalles. –

+0

¿Qué no es correcto aquí? – womp

+0

Exactamente lo que dije en mi respuesta. No hay forma de que Response.Redirect haga un 301. –

0

Un redireccionamiento normal utilizará de forma predeterminada HTTP status 302. Una redirección con status 301 no será indexada por los robots de búsqueda (como Googlebot) y, si lo fueran, se eliminarán de los índices existentes. Muy útil si quiere "actualizar" una URL anterior a una URL más nueva. El robot de búsqueda indexará los redireccionamientos con el estado 302 de todos modos, por lo que es probable que termine contaminando los resultados de búsqueda. Normalmente usaría el estado 302 para, por ejemplo, el patrón PRG y el estado 301 para redireccionamientos permanentes, como lo hace ahora.

12

Response.Redirect emite un 302, que es una redirección temporal. 301, usando el Response.AddHeader que enumeró, es para redireccionamientos permanentes.

Las diferencias entre 301 y 302 tienen cierta importancia con la optimización del motor de búsqueda. A 301 mantendrá todas las clasificaciones de búsqueda de la ubicación anterior. Por otro lado, si NO QUIERES que tu nueva página sea indexada, puedes usar Response.Redirect (302) ya que los motores considerarán la redirección temporal. Google no indexa 302 porque muchos spammers lo usan para tratar de aumentar sus clasificaciones.

Dado que se traslada permanentemente a un nuevo servidor, un 301 es la mejor manera de hacerlo.

-2

Response.Redirect envía un código de estado "302 - trasladado temporalmente" al navegador, que puede estar o no correcto, dependiendo de lo que esté haciendo. Si está redireccionando a la ubicación correcta para su contenido, quiere hacer la redirección 301 porque los motores de búsqueda no se rastrearán correctamente contra un 302.

+0

Esto no es 100% correcto. Response.Redirect solo envía un 302 si establece el indicador "permanente" en falso. Puede enviar un 301 o 302. Tiene la opción de hacer ambas cosas, no necesita configurar manualmente los encabezados para enviar un 301. – womp

+0

@womp: no tiene absolutamente ninguna idea de lo que está hablando. No hay una bandera "permanente". La función Response.Redirect toma uno o dos parámetros: URL objetivo y opcionalmente un booleano para finalizar la respuesta. Por favor edúquese: http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx –

+0

@womp - En caso de que no pueda leer toda la página - aquí está la parte importante para usted - "ASP.NET realiza la redirección devolviendo un código de estado HTTP 302 ". –

Cuestiones relacionadas