關於僞靜態

客戶做一個網站,這個網站還要優化,也是我們公司做,爲了方便優化人員更好的,更快的讓搜索引擎收錄該網站,要不生成全站靜態,要不就是寫成僞靜態,對於我一個新人來說,全站生成靜態還沒接觸過,僞靜態也沒弄過。通過拜讀網上各位大神的傑作,慢慢的對這些有了一定了解。生成全站靜態,確實好,都說會佔資源,還對硬盤損害大,那我就專注於僞靜態了。
        通過請教一些高人,還有網上的資料,發現了僞靜態的多種實現方法,不過都需要配置iis。通過高人的指點,自己感覺把正則寫在Global.asax文件裏還是比較舒服的,這樣不用添加UrlRewrite組件,只用在iis中添加一個映射到.html的aspnet_isapi.dll就可以了,還是比較方便的。好了,閒話不多說,看看代碼吧。
這裏只是個人的一些方法,肯定還有許多好的方法來實現,希望大家都來發表一下自己的想法,共同學習一下。

首先建立一個解決方案,名稱隨意 ,根據個人愛好。這裏是我做的測試。
然後新建兩個.aspx文件,名稱比如a.aspx,b.aspx。
然後在Global.asax文件中添加以下代碼
[csharp] 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.SessionState; 
using System.Text.RegularExpressions; 
 
namespace URLReWrite1 

    public class Global : System.Web.HttpApplication 
    { 
 
        void Application_Start(object sender, EventArgs e) 
        { 
            // 在應用程序啓動時運行的代碼 
 
        } 
 
        void Application_End(object sender, EventArgs e) 
        { 
            //  在應用程序關閉時運行的代碼 
 
        } 
 
        void Application_Error(object sender, EventArgs e) 
        { 
            // 在出現未處理的錯誤時運行的代碼 
 
        } 
        protected void Application_BeginRequest(Object sender, EventArgs e) 
        { 
            Regex reg = new Regex(".+b-(\\d+)-(\\d+).html"); 
            var macth = reg.Match(HttpContext.Current.Request.Url.AbsolutePath); 
            if (macth.Success) 
            { 
                String uid = macth.Groups[1].Value; 
                String spid = macth.Groups[2].Value; 
                HttpContext.Current.RewritePath(String.Format("b.aspx?uid={0}&spid={1}", uid, spid)); 
            } 
        } 
        void Session_Start(object sender, EventArgs e) 
        { 
            // 在新會話啓動時運行的代碼 
           
        } 
 
        void Session_End(object sender, EventArgs e) 
        { 
            // 在會話結束時運行的代碼。  
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式設置爲 
            // InProc 時,纔會引發 Session_End 事件。如果會話模式設置爲 StateServer  
            // 或 SQLServer,則不會引發該事件。 
 
        } 
 
    } 

 

然後在a.aspx文件里加一個超鏈接
[csharp]
<span style="font-size:18px;"> <h3><a href="b-123-111.html">測試</a></h3></span> 

好了,接下來就是需要配置一下iis了,爲你的網站添加一個應用程序擴展名爲.aspx。路徑爲C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll。
然後再添加一個擴展爲.html,路徑還是這個C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll。
還有版本要選擇正確,這樣就可以了,瀏覽剛纔的測試網站,點擊測試,跳轉了。此時的url顯示的是b-123-111.html。www.super888.net
這樣就實現了簡單的僞靜態。希望大家多來指導,怎麼添加一個虛擬目錄。就是這個目錄不存在,想要顯示在url中,比如顯示成a/b-123-111.html。期待學習大家的想法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章