12

是否可以强制/扩展路由引擎以生成小写 URL,/controller/action而不是/Controller/Action?

4

2 回答 2

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();
    }
}
于 2010-09-07T23:56:37.230 回答
4

是的,只需在 global.asax 文件中的路由中更改它即可。

@所有人都在问这是否重要:是的,我确实认为这很重要。将网址全部小写看起来更好。

每次你尽可能不让某件东西看起来不错时,比尔巴克斯顿都会杀死一只小猫。

于 2009-03-30T10:28:13.007 回答