温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET MVC3中如何利用Routing特性提高站点权重

发布时间:2021-09-16 17:18:44 来源:亿速云 阅读:94 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关ASP.NET MVC3中如何利用Routing特性提高站点权重的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

正文

对于SEO,一个地址对应一个唯一独立的内容是保证最好权重的一个重要步骤,所以我们需要确保每一个URL地址对应的内容都是不重复的(对于MVC来说也就是不同的Action),但ASP.NET MVC3程序默认是有问题的,比如HomtController.Index这个Action方法就可以被对应到多个地址上,例如:

1.http://abc.com (默认)
2.http://abc.com/ (斜杠结尾)
3.http://abc.com/Home (带有Controller)
4.http://abc.com/Home/Action (带有Controller和Action)
5.http://abc.com/home/Action (不同的情况)

等等

要解决这个问题,一个办法是使用IIE URL Rewrite Extension,但是它配置起来挺复杂的,所以在这里我们来利用MVC自己的特性来解决这一问题(通过注册全局的filter),添加如下class:

public class RemoveDuplicateContentAttribute : ActionFilterAttribute
{
  public override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    var routes = RouteTable.Routes;
    var requestContext = filterContext.RequestContext;
    var routeData = requestContext.RouteData;
    var dataTokens = routeData.DataTokens;
    if (dataTokens["area"] == null)
      dataTokens.Add("area", "");
    var vpd = routes.GetVirtualPathForArea(requestContext, routeData.Values);
    if (vpd != null)
    {
      var virtualPath = vpd.VirtualPath.ToLower();
      var request = requestContext.HttpContext.Request;
      if (!string.Equals(virtualPath, request.Path))
      {
        filterContext.Result = new RedirectResult(virtualPath + request.Url.Query, true);
      }
    }
    base.OnActionExecuting(filterContext);
  }
}

然后在Global里注册filter就可以了:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
  filters.Add(new HandleErrorAttribute());
  filters.Add(new RemoveDuplicateContentAttribute());
}

我们来解释一下:

首先,RemoveDuplicateContent filter获取当我的RequestContext和RouteData,然后判断如果当前没有使用Area的话就为DataToken添加一个空值,这一点非常重要,因为如果不加的话,后面再使用Area特性的话就会出错。

接着,该filter通过RouteData获取虚拟path,然后toLower一下转换成小写。

然后,和当前request的path进行比较,如果不一致就重定向到小写的虚拟path上,这样,搜索引起就能识别当写多个请求其实都是对应到你的虚拟path那个真实的地址上,也就是说唯一对应那个action的地址上,以此来做到一个地址对应一个内容。

感谢各位的阅读!关于“ASP.NET MVC3中如何利用Routing特性提高站点权重”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI