ASP.NET 4.0 在 SEO 上的強化
現代的網站最重視的一件事,也許除了一般的網路行銷和廣告以外,就是如何容易讓搜尋引擎找到,並且建立好適當的索引與搜尋值以增加網站的曝光率,搜尋引擎最佳化 (Search Engine Optimization, SEO) 是一個如何讓搜尋引擎能夠擷取到網站的資料,以及讓搜尋引擎能夠將資料歸納到正確位置的一種方法,最直接的效用就是提升網站的排名,而要做好 SEO 的方式不外乎幾個:
1. 在網頁上加入適當的關鍵字。即 <meta http-equiv=”Keywords” content=”…” />
2. 具親和力的 URL,例如將 http://www.mysite.com.tw/product.aspx?uid=392894 改為http://www.mysite.com.tw/books/392894.aspx 或是http://www.mysite.com.tw/books/mybook.aspx 等。
3. 減少 HTTP 404 的次數(不論是對外連結或是影像檔)。
4. 提高內容的可解析能力,像是 HTML 格式的嚴謹性,以及關鍵字的使用等。
5. 其他可以讓搜尋引擎機器人 (Crawler) 更容易收集網站資料的方法。
在 ASP.NET 內建的支援中,早期並沒有特別針對 SEO 設計,到了 ASP.NET 2.0 時,加入了一個 Page.Header 允許開發人員直接存取 Page 的 Head 區域,到了 .NET Framework 3.5 開發時期以及 Google 開始竄紅的時候,SEO 開始被大家所重視,ASP.NET 本身的支援顯然不足,因此 ASP.NET 4.0 加入了數個功能,並且在 IIS 7.x 上也添加了一個新工具:SEO Toolkit (http://www.microsoft.com/web/seo/default.aspx)。
1. 強化的 Keywords 以及 Description 支援。
在 HTML 加入關鍵字與說明,是提升 SEO 的基本工作:
在 ASP.NET 2.0 中,如果要加入這些標籤的話,只能使用 Page.Header 屬性,透過 Literal 控制項來加入:
Page.Header.Controls.Add(new Literal() { Text = "<meta http-equiv='keywords' content='keywords' />" });
Page.Header.Controls.Add(new Literal() { Text = "<meta http-equiv='Description' content='Site Description' />" });
Page.Header.Controls.Add(new Literal() { Text = "<meta http-equiv='Description' content='Site Description' />" });
但這樣老實說並不是很方便,而且對一些初入門的 Web Developer 的指引並不夠,可能也不知道可以這樣加,因此 ASP.NET 4.0 特別加入了 Page.MetaKeywords 以及 Page.Descriptions 兩個屬性,能夠直接存取 Head 區域中的 Keywords 以及 Descriptions 中介資料:
除了可以在程式碼中設定外,也可以在 Page 設定中宣告:
2. URL Routing 正式支援 ASP.NET Web Forms
ASP.NET Routing 是在 .NET Framework 3.5 中所新增的功能,隨著 ASP.NET MVC 1.0 發表,它在當時也是專屬於 ASP.NET MVC 的功能,作用是將 URL Request 導向到負責處理它的 Controller,例如:
它的最主要功能,就是將 URL 以更具親和力的方式呈現,而這也是 SEO 所要做到的基本功能之一,具親和力的 URL 可以讓瀏覽者更容易記住以及搜尋資料,也可以讓搜尋引擎演算法作為提升 Page Ranking 的依據,但這個功能在 .NET Framework 3.5 時仍不支援 ASP.NET Web Forms,對於 Web Forms 的開發人員來說,仍然只有使用外部的工具,像是 IIS 本身的 URL Rewriting Module,或是像 UrlRewriting.NET 這類的工具來處理,到了 ASP.NET 4.0 開始,ASP.NET Routing 正式開始支援 Web Forms 了:
ASP.NET Routing 新增一個 MapPageRoute() 方法建立對 Web Form 的頁面對應;在 Web Forms 中,新增了 Page.RouteData 屬性以支援由 Routing 轉送的參數資料;在 SqlDataSource 中新增了 RouteParameter 物件以支援對 Routing 參數的自動擷取;Web Forms 中可利用 Page.GetRouteUrl() 來生成可支援 Routing 的 URL 格式;新增 Response.RedirectToRoute() 支援以 Routing 為主的 URL 轉向;以及配合 Routing 所做的 Postback 支援等等。
3. 重導向的支援
開發人員最常使用的 URL 重導向有三種:
1. Response.Redirect(),用作瀏覽器本身的轉向,它會輸出 302 (Found) 給瀏覽器使用。
2. Server.Transfer,用作在伺服器內部的轉換,瀏覽器的 URL 不會有變化,但內容會有變化。
3. 用戶端指令碼:window.location.href,要求瀏覽器轉向。
不過對於搜尋引擎機器人來說,Response.Redirect() 送出的 302 訊息,會讓搜尋引擎再提出一次 HTTP 要求到主機上,等於另外產生了一次 server 的 round-trip,搜尋引擎演算法對這種類型的轉向處理其實會給予負面評價,會衝擊到網站的 SEO 水準,因此在 ASP.NET 4.0 中新增了強制轉向 (Permanent) 的新指令:RedirectPermanent() 以及 RedirectToRoutePermanent() 兩個方法,它傳回的是 301 (Move Permanently) 訊息,這會讓搜尋引擎將它視為一個有效的連結,以讓網站的 SEO 評價更貼近現況。
RedirectToPermanent() 是給一般的轉向功能用的,它的使用方式和 Redirect() 是一樣的:
RedirectToRoutePermanent() 是給 ASP.NET Routing 用的,使用方式也是和 ReditectToRoute() 相同:
IIS 7.x 的 SEO Toolkit
SEO Toolkit 是 IIS 7.x 上,可以偵測網站中的 SEO 相關支援是否充份,以及通知管理人員會影響 SEO 因素的項目,可以說是網站類型的 Code Analysis 工具:
雖然它只能安裝在 IIS 7.x 的電腦 (Windows Vista, Windows Server 2008 以及 Windows 7) 上,但它可以偵測網路上任何一種 Web Server 上的網站 (IIS5, IIS6, IIS7, 甚至是 Apache Server) ,而且也不需要在那些機器上安裝任何軟體,它內建有一個 Crawler 以及演算法分析器,透過 HTTP Request 去提交與偵測網站的 SEO 問題,因此開發人員只需要在開發機器上安裝 SEO Toolkit,就可以對其他 Web Server 做分析。
SEO Toolkit 可以利用 Web Platform Installer 2.0 下載安裝。
參考資料:
1. ASP.NET 4.0 SEO Improvements: http://weblogs.asp.net/scottgu/archive/2010/01/05/asp-net-4-seo-improvements-vs-2010-and-net-4-0-series.aspx
2. SEO Toolkit: http://weblogs.asp.net/scottgu/archive/2009/12/15/search-engine-optimization-seo-toolkit.aspx
3. URL Routing with ASP.NET Web Forms: http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx
留言
張貼留言