Pregunta

Quería saber si hay una solución usando IIS6 para que una aplicación elimine el texto default.aspx en la url. así, por ejemplo, si un usuario acierta:

www.website.com/default.aspx

el navegador solo muestra:

www.website.com/

No importa qué. Es solo para SEO.

Ya uso UrlRewriting.NET para algunas reescrituras en mi aplicación, pero no soy tan inteligente como para crear una regla para eso.

Cualquier ayuda es muy apreciada.

Gracias. Jose

¿Fue útil?

Solución

Si tiene algo que hacer para reescribir URL, entonces todo lo que necesita hacer es asegurarse de que sus enlaces apunten a la URL correcta.

Si no arregla sus enlaces, depende del navegador decidir si desea mostrar el enlace real que solicitó.

Si realmente desea hacer un trabajo dudoso, puede usar algunos javascript para que la barra de direcciones del navegador muestre lo que quiera, incluso si no es válido.

Otros consejos

Creo que ScottGu ya tiene cubierto el tema de la reescritura en ASP.NET: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net. aspx .

Cubre cosas como:

  • Reescribiendo usando UrlRewriter.net, ISAPI Rewrite
  • Trucos ASP.NET, publicación de nuevo (golpear la versión amigable de la url)

Con su problema, creo que necesita usar una combinación de, nunca vincular a 'default.aspx', es decir. SOLO enlace a '/'. Luego, use el archivo del navegador de Scott Postback para asegurarse de que las devoluciones siempre lleguen a la misma versión amigable de la URL.

Redirigir 'default.aspx' a '/', que luego recibe 'default.aspx', me parece una receta para el desastre. Simplemente arregle sus enlaces para asegurarse de que nunca termine explícitamente en 'default.aspx'.

Creo que la forma más simple de cambiar el índice de resultados de búsqueda (suponiendo que sepa sobre HTTP 301) es escribir una pequeña función en su Page_Load default.aspx que redirige el navegador usando un 301 movido permanentemente (o 302 movido temporalmente).

void Page_Load(...) {

    if(Request.Path.EndsWith("default.aspx", true/*case-insensitive*/, null)) {
       Response.StatusCode = 301;
       Response.StatusDescription = "Moved Permanently";
       Response.Headers.Add("Location", "/");
       HttpContext.Current.ApplicationInstance.CompleteRequest(); // end the request
    }

    // do normal stuff here
}

Si default.aspx está configurado como el documento predeterminado para servir en IIS, y todos los enlaces internos de su sitio contienen URL sin el default.aspx, entonces creo que debería ser el truco.

Aunque el usuario aún puede escribir default.aspx , las arañas de los motores de búsqueda solo deben recoger las URL más amigables de sus atributos de enlace href.

La forma en que lo haría es utilizar Application_BeginRequest en la clase pública Global: System.Web.HttpApplication y verificar HttpContext.Current.Request.URL para default.aspx, y luego usar HttpContext.Current.Response.Redponct desde allí si lo encuentras.

La desventaja es que tener una redirección no siempre es tan buena y esto no va a funcionar si está publicando datos en esa página default.aspx. Pero no puede simplemente engañar al navegador para que muestre una URL diferente, aunque puede decirle a ASP.NET que sirva la página que desee para cualquier solicitud.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top