<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      大叔手記(14):利用Routing特性提高ASP.NET MVC3站點的SEO權重

      2011-12-23 14:21  湯姆大叔  閱讀(7056)  評論(13)    收藏  舉報

      簡介

      我們在開發互聯網程序的時候,有個很重要的事情就是做搜索引擎優化(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

      同步與推薦

      本文已同步至目錄索引:《大叔手記全集》

      大叔手記:旨在記錄日常工作中的各種小技巧與資料(包括但不限于技術),如對你有用,請推薦一把,給大叔寫作的動力。

      主站蜘蛛池模板: 亚洲免费观看视频| 免费无码又爽又刺激高潮虎虎视频| 女人下边被添全过视频的网址| 一本高清码二区三区不卡| 日本一区二区精品色超碰| 无码国模国产在线观看免费| 午夜通通国产精品福利| 又爽又黄又无遮挡的激情视频| 国产成人精品高清不卡在线| 日本欧美大码a在线观看| 中文国产不卡一区二区| 亚洲成av人片在www色猫咪| 久久综合97丁香色香蕉| 婷婷六月天在线| 亚洲а∨精品天堂在线| 少妇人妻真实偷人精品| 欧美日韩欧美| 国产成人啪精品视频免费APP| 姜堰市| 精品国产乱码久久久久久浪潮| 99久久婷婷国产综合精品青草漫画 | 日韩精品视频一区二区不卡| 无码人妻一区二区三区AV| 亚洲第一国产综合| 精品亚洲国产成人av在线| 99久久免费精品色老| 亚洲成a人片在线观看中| 在线国产极品尤物你懂的| 亚洲日本韩国欧美云霸高清| 亚洲 中文 欧美 日韩 在线| 亚洲狼人久久伊人久久伊| 波多野结衣av高清一区二区三区| 尤物国产精品福利在线网| 人妻少妇精品中文字幕| 成人性生交大片免费看r老牛网站 中文字幕一区二区三区四区五区 久久久久久毛片免费播放 | 成人午夜免费无码视频在线观看| 国产香蕉一区二区三区在线视频| 94人妻少妇偷人精品| 婷婷六月色| 制服丝袜长腿无码专区第一页| 亚洲成人av在线资源|