• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET MVC3 SEO优化:利用Routing特性提高站点权重

ASP.NET MVC3 SEO优化:利用Routing特性提高站点权重

作者:汤姆大叔 字体:[增加 减小] 来源:互联网 时间:2017-05-11

汤姆大叔通过本文主要向大家介绍了mvc3,mvc3下载,mvc3教程,mvc3和mvc4的区别,vs2010 mvc3等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

简介

我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(SEO),我们都知道ASP.NET MVC程序提供了友好的URL以及永久重定向的支持,这些友好的URL是利用Routing系统的特性来支持的,但是在这个Routing里有个问题,就是多个不同的地址和指向同一个action方法,那对于搜索引擎来说就意味着你的站点有很多地址的内容都是重复的。 本章内容将展示如果解决这一问题。

正文

对于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);
  }
}

</div>

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

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

我们来解释一下:

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

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

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

总结

对于SEO,确保一个地址对应一个内容是非常重要的,因为如果多个地址对应一个内容的话,搜索引起不知道到底你的这些地址哪个是最新哪个是旧的,因为可能就会降低你的权重。

英文原文:http://weblogs.asp.net/imranbaloch/archive/2011/12/19/solving-duplicate-content-issue-in-asp-net.aspx

以上这篇ASP.NET MVC3 SEO优化:利用Routing特性提高站点权重就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET MVC3 SEO优化:利用Routing特性提高站点权重
  • Asp.Net MVC3.0如何项目部署到Win7 64位系统
  • asp.net mvc3.0安装失败如何解决
  • ASP.NET MVC3手把手教你构建Web
  • ASP.NET MVC3模板页的使用(2)
  • ASP.NET MVC3网站创建与发布(1)
  • jquery提交表单mvc3后台处理示例
  • ASP.NET MVC3 实现全站重定向的简单方法
  • 使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法介绍
  • ASP.NET MVC3关于生成纯静态后如何不再走路由直接访问静态页面

相关文章

  • 2017-05-11ASP.NET MVC中的AJAX应用
  • 2017-05-11ASP.NET TreeView读取数据库实例
  • 2017-05-11asp.net利用反射实现给model类赋值的方法
  • 2017-05-11在ASP.NET中重写URL的代码
  • 2017-05-11扩展了Repeater控件的EmptyDataTemplate模板功能
  • 2017-05-11ASP.NET AJAX时用alert弹出对话框
  • 2017-05-11mvc下,3种窗口弹出设置的方法
  • 2017-05-11微信公众平台开发之语音识别.Net代码解析
  • 2017-05-11页面包含的处理
  • 2017-05-11.NET中防止Access数据库下载

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • RadioButtonList绑定图片及泛型Dictionary应用
    • sql server中批量插入与更新两种解决方案分享(asp.net)
    • ASP.NET笔记之 Request 、Response 与Server的使用
    • 弹出窗口,点击确定在删除数据的实现方法
    • asp.net core MVC 过滤器之ActionFilter过滤器(2)
    • ASP.NET 2.0 URL映射技巧
    • VB.NET调用MySQL存储过程并获得返回值的方法
    • 详解Spring Boot 中使用 Java API 调用 lucene
    • js获取Treeview选中的节点(C#选中CheckBox项)
    • ASP.NET TreeView读取数据库实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有