【发布时间】:2009-03-30 10:15:49
【问题描述】:
是否可以强制/扩展路由引擎以生成小写 URL,提供 /controller/action 而不是 /Controller/Action?
【问题讨论】:
-
是的,我认为是的。不确定它是否对 SEO 有任何影响,但它看起来确实好多了。
标签: asp.net-mvc asp.net-mvc-routing
是否可以强制/扩展路由引擎以生成小写 URL,提供 /controller/action 而不是 /Controller/Action?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-routing
此外,您应该强制将所有大写的传入请求重定向到小写版本。搜索引擎对 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();
}
}
【讨论】:
可以,只需在 global.asax 文件中的路由中更改即可。
@All 询问是否重要:是的,我确实认为这很重要。将网址全部小写看起来更好。
每当你不让某件东西看起来不错时,比尔·巴克斯顿就会杀死一只小猫。
【讨论】: