ASP.NET MVC中的小写URL

and*_*w_m 12 asp.net-mvc asp.net-mvc-routing

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

Dre*_*kes 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这也将考虑查询参数的大小写敏感性,这可能是也可能不是一个问题,具体取决于应用程序(它肯定会用于我已经处理过的一些事情). (3认同)

Iai*_*der 5

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

@所有询问这是否重要的​​人:是的,我确实认为这很重要。将 url 全部改成小写看起来会更好。

每当你在力所能及的情况下不让某样东西看起来好看时,比尔·巴克斯顿就会杀死一只小猫。