Подтвердить что ты не робот

URL-адрес нижнего регистра в ASP.NET MVC

Можно ли заставить/расширить механизм маршрутизации для генерации URL-адресов в нижнем регистре, указав /controller/action вместо /controller/action?

4b9b3361

Ответ 1

Что еще нужно, вы должны принудительно перенаправить входящие запросы, которые должны быть переадресованы в нижестоящую версию. Поисковые системы обрабатывают URL-адреса с учетом обстоятельств, что означает, что если у вас есть несколько ссылок на один и тот же контент, рейтинг содержимого страницы распределяется и, следовательно, разведен.

Возвращение HTTP 301 (перемещение на постоянной основе) для таких ссылок приведет к тому, что поисковые системы будут "сливать" эти ссылки и, следовательно, будут содержать только одну ссылку на ваш контент.

Добавьте в файл 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();
    }
}

Ответ 2

Да, просто измените его в маршрутизации в файле global.asax.

@Все спрашивают, имеет ли это значение: Да, я думаю, это имеет значение. Наличие url всего в нижнем регистре просто выглядит лучше.

Каждый раз, когда вы не делаете что-то красивое, когда можете, Билл Бакстон убивает котенка.