Можно ли заставить/расширить механизм маршрутизации для генерации URL-адресов в нижнем регистре, указав /controller/action
вместо /controller/action
?
URL-адрес нижнего регистра в ASP.NET MVC
Ответ 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 всего в нижнем регистре просто выглядит лучше.
Каждый раз, когда вы не делаете что-то красивое, когда можете, Билл Бакстон убивает котенка.