網站要做SEO,地球人都知道,根據網站訪問統計的結果,很大一部分來自百度搜尋,少部分來自Google。
SEO一個很重要的方面就是進行路徑的重寫,也就是URL重寫,實現偽靜態,以前沒做過,覺得可能會比較複雜,動手試了試,原來很好弄。
總的來說分三步,第一步:在web.config添加配置,第二步:寫一個URL重寫類,繼承IhttpHandler介面,第三步:IIS配置
第一步:web.config添加配置
說動手就動手,開啟VS2008,建立一個網站URLRewrite,開啟web.config檔案,在裡面添加配置資訊,位置
在圖中所示的httpHandlers節點處添加子節點既可以,Verb表示請求類型,比如GET,POST等,path表示路徑,type也就是哪個類來具體處理這個請求。* 表示萬用字元。下面舉例說明
1.比如重寫到某個目錄
<add verb="*" path="test/*" type="CustomHttpHandler"/>
表示對test目錄下的所有檔案進行URL重新導向,CustomHttpHandler檔案是我們自訂的一個重寫類。
這個目錄可以存在,可以不存在,兩者有區別:存在的話CSS,JS,圖片,檔案路徑可以用相對路徑,基本不要動原來的,不存在的話,CSS,JS等就要採用絕對路徑了。
2.比如重寫成某類檔案,這個尾碼名常用的都是可以定義的。
<add verb="*" path="product/*.htm" type="CustomHttpHandler"/>
表示開啟連結中product目錄下含有html檔案都要進行URL重新導向,如果你定義的尾碼名在IIS擴充中沒有,需要另外在IIS中添加擴充對應關係。
比如重寫之前的地址可能是product/Default.aspx?id=2 那麼重寫之後變成product/2.htm
第二步:添加重寫類CustomHttpHandler.cs
CustomHttpHandler.cs檔案繼承IhttpHandler介面,介面包含IsReusable屬性和ProcessRequest方法,
ProcessRequest:用來處理http請求。
IsReusable:表示是否可以重用處理多個同類型的http請求。
下面進行重寫,直接上代碼,針對上面的兩個樣本寫的
public class CustomHttpHandler : IHttpHandler{ public CustomHttpHandler() { // //TODO: 在此處添加建構函式邏輯 // } // 是否可以重用 public bool IsReusable { get { return true; } } // 處理Http請求類 public void ProcessRequest(System.Web.HttpContext context) { // 擷取當前連結地址 string url = context.Request.Url.PathAndQuery.ToString(); string realUrl = string.Empty; // 這裡用泛型來實現 Dictionary<string, string> urlDic = new Dictionary<string, string>(); urlDic.Add("/test", "/news/Default.aspx"); // 虛目錄例子 urlDic.Add("product/(\\w+).htm", "product/Default.aspx?id=$1"); // 偽靜態例子 // 迴圈判斷 foreach (var item in urlDic) { // 匹配 if (Regex.IsMatch(url, item.Key, RegexOptions.IgnoreCase)) { // 替換 realUrl = Regex.Replace(url, item.Key, item.Value, RegexOptions.IgnoreCase); } } if (realUrl != "") { // 直接執行真實URL context.Server.Execute(realUrl); } else { context.Response.Write("重寫異常"); } context.Response.End(); }}
這個類運用的最多的是Regex,匹配和替換,Regex學個1-2個小時,基本上簡單的都會用的。有一個注意的地方,要替換的地方加()即可,這個我也搞了蠻久的,一直替換不了。
到這裡為止,在VS2008基本上可以運行測試了,在default.aspx檔案裡有例子。
第三步:IIS配置
發布部署到IIS以後,如果不修改IIS,開啟連結會報找不到檔案的404錯誤,
以IIS5.1為例,因為我用的是XP系統,找到【主目錄】選項卡,點擊配置,彈出應用程式配置視窗,
添加一個和.aspx一模一樣的擴充,只是尾碼名為htm,另外有個注意點:
檢查檔案是否存在的勾√必須去掉。