2009-03-30 18 views
12

Czy można wymusić/rozszerzyć mechanizm routingu, aby generować adresy URL małymi literami, podając /controller/action zamiast /Controller/Action?Adresy URL małych liter w ASP.NET MVC

+0

Tak, myślę, że tak. Nie jestem pewien, czy ma jakieś implikacje SEO, czy nie, ale wygląda o wiele lepiej. –

Odpowiedz

4

Tak, po prostu zmień go w routingu w pliku global.asax.

@ Wszystkie pytania, czy to ważne: tak I do wydaje mi się, że to ważne. Posiadanie adresu URL w całości małymi literami wygląda lepiej.

Za każdym razem, gdy nie możesz zrobić czegoś ładnego, kiedy możesz, Bill Buxton zabija kotka.

+0

Wow, Bill Buxton jest HARSH! – SirDemon

+0

Myślę, że każdy, kto był w Mix lub ReMix w ciągu ostatnich 12 miesięcy musiał usiąść przy Big Billy B (wprawdzie całkiem interesującym) na temat znaczenia designu, który musi być wypiekany w produkcie. –

16

Co więcej, należy wymusić, aby wszystkie przychodzące żądania wielkimi literami były przekierowywane na do wersji pisanej małymi literami. Wyszukiwarki traktują adresy URL z rozróżnieniem na małe i wielkie litery, co oznacza, że ​​jeśli masz wiele linków do tej samej treści, ranking stron w tej witrynie jest rozproszony, a więc rozrzedzony.

Powracający HTTP 301 (przeniesiony na stałe) dla takich linków spowoduje, że wyszukiwarki "scalą" te linki, a zatem będą mieć tylko jedno odniesienie do treści.

dodać coś takiego do pliku 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

Należy pamiętać, że uwzględni to również rozróżnianie wielkości liter parametrów zapytania, co może, ale nie musi być problemem w zależności od aplikacji (z pewnością byłoby to dla niektórych rzeczy, nad którymi pracowałem). – roryf

Powiązane problemy