6

He buscado en Google todo, y he leído un montón de respuestas diferentes, algunas he intentado implicar sin éxito. No soy un programador profesional, pero agradezco a las personas en este foro por enseñarme mucho sobre todo, desde jquery a doctypes, ¡a tu nombre!¿Cuál es la forma más recomendada de redireccionar 301 en asp.net?

Tengo un sitio web desarrollado en VWD 2010 Express. Sólo quiero saber 2 cosas:

  1. Sé que es malo para los motores de búsqueda/contenido duplicado haber SuDominio y www.yourdomain tanto, por lo que quiero configurar una redirección 301 de modo que si un usuario final tipos en mydomain, se redirigen automáticamente a www.mydomain (con www).

  2. He movido algunas páginas que no están en la raíz, sino en carpetas. Así que quiero reemplazar la página obsoleta con la nueva ubicación. Quiero hacer esto redirigiéndolos automáticamente desde www.mydomain/servicios /engineering.aspx a www.mydomain/productos /engineering.aspx.

¿Es esto difícil? ¿Es (recomendado) para usar .htaccess, o web.config, o alguna otra cosa?

Gracias por su tiempo en leer esto, y aprecio sinceramente todos los comentarios.

Jason Weber

Respuesta

7

Htacess A menos que he entendido mal es para Apache y si está codificando en ASP.Net que es casi seguro que utiliza IIS. Así que ignoré las cosas de .htaccess en su investigación.

Puede usar algún tipo de reescritura de URL para sus redireccionamientos, pero eso puede ser muy complejo. Si yo fuera usted quisiera mantenerlo lo más simple posible y hacer su antigua página 301 vuelve a dirigir en el evento Page_Load es decir

protected void Page_Load(object sender, System.EventArgs e) 
{ 
    Response.Status = "301 Moved Permanently"; 
    Response.AddHeader("Location","http://www.domainname.com/new-page.aspx"); 
} 

Para su redireccionamiento canónica (no www a www) que podría hacer similar en el Global.asax archivo en Application_BeginRequest para detectar la variante no www es decir

if (HttpContext.Current.Request.Url.ToString().ToLower().Contains( 
    "http://mysite.com")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.AddHeader("Location", 
     Request.Url.ToString().ToLower().Replace( 
      "http://mysite.com", 
      "http://www.mysite.com")); 
} 

(esto no es mi código que venía de here)

esto es lo que iba a hacer de todos modos - que tiene la ventaja de ser fácil de entender y mantenerte fuera del camino de cualquier extraña configuración del servidor web que a veces encuentro un poco de una caja negra.

+0

Excelente información, Cangrejo: ¡muy apreciado! Me siento bastante tonto por no reconocer las cosas de .htaccess/apache, ya que estoy en un servidor de Windows. La información y el enlace son excelentes, un consejo perfecto para mi situación. Estas redirecciones no deberían ser demasiado difíciles de implementar. ¡Gracias de nuevo por tu tiempo! –

+0

@JasonWeber No hay problema en absoluto. Buena suerte con todo –

6

Dado que está utilizando VWD 2010 Express, se beneficiaría de utilizar el método .NET4 Response.RedirectPermanent (stringURL). Es parte del objeto HttpResponse.

Más documentación disponible aquí: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

Esto funciona igual que era tan Response.Redirect() sin embargo, emite un código 301 al cliente junto con la realización de la redirección.

+0

Eso era perfecta y fácil - gracias una tonelada por la respuesta y el enlace, Kyle! –

+0

Y sí, estoy en el framework .net4.0, así que esta fue una solución perfecta. –

-1

Hagan esto en la que desea redirigir más de 301

string url = "newpage.aspx"; 
     Response.Clear(); 
     Response.StatusCode = 301; 
     Response.RedirectLocation = url.ToLower(); 
     Response.End(); 

A continuación, utilice la herramienta de inspección de Chrome y comprobar en la pestaña "Red" para ver el Código del Estatuto. Funciona para mí.

Cuestiones relacionadas