最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:36:53
文档

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

ASP.NET MVC3 SEO优化:利用Routing特性提高站点权重:简介 我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(SEO),我们都知道ASP.NET MVC程序提供了友好的URL以及永久重定向的支持,这些友好的URL是利用Routing系统的特性来支持的,但是在这个Routing里有个问题,就是多个不同的地址和指向同
推荐度:
导读ASP.NET MVC3 SEO优化:利用Routing特性提高站点权重:简介 我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(SEO),我们都知道ASP.NET MVC程序提供了友好的URL以及永久重定向的支持,这些友好的URL是利用Routing系统的特性来支持的,但是在这个Routing里有个问题,就是多个不同的地址和指向同


简介

我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(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);
 }
}

然后在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的地址上,以此来做到一个地址对应一个内容。

总结

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

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

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

文档

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

ASP.NET MVC3 SEO优化:利用Routing特性提高站点权重:简介 我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(SEO),我们都知道ASP.NET MVC程序提供了友好的URL以及永久重定向的支持,这些友好的URL是利用Routing系统的特性来支持的,但是在这个Routing里有个问题,就是多个不同的地址和指向同
推荐度:
标签: net mvc ASP.NET
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top