網站SEO過程中發現URL重寫實現偽靜態原來並不難

來源:互聯網
上載者:User

網站要做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,另外有個注意點:

檢查檔案是否存在的勾√必須去掉。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.