【问题标题】:ASP.NET MVC 3.0 use the best URLASP.NET MVC 3.0 使用最佳 URL
【发布时间】:2011-07-10 14:08:55
【问题描述】:

如果新建一个asp.net mvc网站,Global.asax.cs中的默认路由如下:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

这意味着以下网址都解析到同一个页面。

  • mysite.com
  • mysite.com/home
  • mysite.com/home/index

如果有人点击mysite.com/homemysite.com/home/index,我希望网址为mysite.com。这是它的最佳网址。这也意味着谷歌和其他搜索引擎不认为我有重复的内容。

我该怎么做?

【问题讨论】:

    标签: asp.net-mvc-3 url-routing asp.net-mvc-routing seo


    【解决方案1】:

    您可以尝试两种选择:

    1. 查看here 了解如何创建 URL 重写规则。
    2. 你也可以调用

       context.Response.RedirectPermanently("mysite.com"); // you can do this in custom httphandler 
      

    如果有人点击 mysite.com/home 或 mysite.com/home/index

    不确定这是否能解决您的 Google 搜索引擎内容重复问题。

    【讨论】:

    • 您回答中概述的问题是它不能自动扩展。如果我添加一个块控制器。并添加一个块索引 id 然后我会得到 /blog 和 /blog/index。我将需要手动添加重写规则。我希望它自动发生。
    • @Will:所以每个控制器中都有“索引”操作方法?我只是想确保在您的情况下只有控制器名称正在更改。不是动作名称?
    【解决方案2】:

    此答案并非特定于 ASP.NET MVC,因为您可以在任何页面上使用它来确认内容的正确规范页面...例如,如果您访问

    www.stevefenton.co.uk/Content/Home/
    

    您将在文档的头部看到以下元素...

    <link rel="canonical" href="http://www.stevefenton.co.uk/">
    

    这向网络爬虫确认页面的主地址实际上是根页面。

    要使其特定于您的 ASP.NET MVC 页面,最好的办法是确保始终链接到正确的地址变体,以便所有链接都指向正确的位置。网络爬虫会跟踪您的链接(就像您的用户一样),因此如果您的链接正确,它们会将这些链接的内容编入索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2012-09-30
      • 2012-01-24
      • 1970-01-01
      相关资源
      最近更新 更多