2009-03-30 14 views
12

¿Es posible forzar/extender el motor de enrutamiento para generar URL en minúsculas, dando /controller/action en lugar de /Controller/Action?URL de minúsculas en ASP.NET MVC

+0

Sí, creo que sí. No estoy seguro si tiene alguna implicación SEO o no, pero se ve muchísimo mejor. –

Respuesta

4

Sí, simplemente cámbielo en el enrutamiento en el archivo global.asax.

@Todo preguntando si importa: Sí I do creo que es importante. Tener el URL todo en minúscula se ve mejor.

Cada vez que no haces que algo se vea bien cuando puedes, Bill Buxton mata a un gatito.

+0

¡Guau, Bill Buxton es DURO! – SirDemon

+0

Creo que cualquiera que ha estado en Mix o ReMix en los últimos 12 meses ha tenido que sentarse a través de la gran queja de Big Billy B (admitidamente bastante interesante) sobre la importancia de que el diseño se incorpore a un producto. –

16

Además, debe forzar cualquier solicitud entrante que sea mayúscula para ser redirigido a la versión en minúsculas. Los motores de búsqueda tratan las URL con mayúsculas y minúsculas, lo que significa que si tiene múltiples enlaces al mismo contenido, la clasificación de la página del contenido se distribuye y, por lo tanto, se diluye.

Devolver HTTP 301 (movido permanentemente) para tales enlaces provocará que los motores de búsqueda 'fusionen' estos enlaces y, por lo tanto, solo contengan una referencia a su contenido.

Añadir algo como esto a su archivo Global.asax.cs:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    // Don't rewrite requests for content (.png, .css) or scripts (.js) 
    if (Request.Url.AbsolutePath.Contains("/Content/") || 
     Request.Url.AbsolutePath.Contains("/Scripts/")) 
     return; 

    // If uppercase chars exist, redirect to a lowercase version 
    var url = Request.Url.ToString(); 
    if (Regex.IsMatch(url, @"[A-Z]")) 
    { 
     Response.Clear(); 
     Response.Status = "301 Moved Permanently"; 
     Response.StatusCode = (int)HttpStatusCode.MovedPermanently; 
     Response.AddHeader("Location", url.ToLower()); 
     Response.End(); 
    } 
} 
+3

Tenga en cuenta que esto también tendrá en cuenta la sensibilidad de mayúsculas y minúsculas de los parámetros de consulta, lo que puede o no ser un problema según la aplicación (sin duda, para algunas cosas en las que he trabajado). – roryf

Cuestiones relacionadas