是否可以强制/扩展路由引擎以小写生成网址,从/controller/action
代替/Controller/Action
?
答案 0 :(得分:16)
此外,您应该将任何大写的传入请求强制重定向到小写版本。搜索引擎区分大小写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();
}
}
答案 1 :(得分:4)
是的,只需在global.asax文件中的路由中更改它。
@All询问是否重要:是的我做认为这很重要。将网址全部放在小写字母中看起来更好。
每当你不能让事情看起来很好的时候,比尔巴克斯顿会杀死一只小猫。