Asp.net創建偽靜態頁面


下面是我研究了好幾天和同事一起才研究出來的,原創。

1偽靜態的定義:

  偽靜態是相對真實靜態來講的,通常我們為了增強搜索引擎的友好面,都將文章內容生成靜態頁面,但是有的朋友為了實時的顯示一些信息。或者還想運用動態腳本解決一些問題。不能用靜態的方式來展示網站內容。但是這就損失了對搜索引擎的友好面。怎么樣在兩者之間找個中間方法呢,這就產生了偽靜態技術。就是展示出來的是以html一類的靜態頁面形式,但其實是用ASP一類的動態腳本來處理的。

2偽靜態的實現:

  2.1創建URL重寫類URLRewiter.cs 代碼如下:

     

 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 using System.Web.UI.WebControls.WebParts;
 9 using System.Web.UI.HtmlControls;
10 namespace WebApplication1
11 {
12     public class URLRewiter : IHttpHandler
13     {
14         public URLRewiter()
15         {
16         // TODO: 在此處添加構造函數邏輯
17           }
18         public void ProcessRequest(HttpContext Context)
19         {
20             try
21             {
22                 //取得原始URL屏蔽掉參數
23                 string Url = Context.Request.RawUrl;
24                 //建立正則表達式
25                 System.Text.RegularExpressions.Regex Reg = new System.Text.RegularExpressions.Regex
26                 (@"/show-(\d+)\..+", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
27                 //用正則表達式進行匹配
28                 System.Text.RegularExpressions.Match m = Reg.Match(Url, Url.LastIndexOf("/"));//從最后一個“/”開始匹配
29                 if (m.Success)//匹配成功
30                 {
31                     String RealPath = @"~/aspx/show.aspx?type=" + m.Groups[1];
32                     Context.Server.Execute(RealPath);
33                 }
34                 else
35                 {
36                     Context.Response.Redirect(Context.Request.Url.ToString());
37                 }
38             }
39             catch
40             {
41                 Context.Response.Redirect(Context.Request.Url.ToString());
42             }
43         }
44 
45         /// <summary>
46         /// 實現“IHttpHandler”接口所必須的成員
47         /// </summary>
48         /// <value></value>
49         /// Author:yoyo
50         /// blog:http://yangmingsheng.cn
51         public bool IsReusable
52         {
53             get { return false; }
54         }
55     }
56 }
View Code

  2.2Web.Config的修改代碼如下:

   

1 <httpHandlers>
2         <add verb="*" path="*/show-?*.aspx" type="WebApplication1.URLRewiter" />
3         <add verb="*" path="*/show-?*.html" type="WebApplication1.URLRewiter" />
4 </httpHandlers>

目前為止在本地瀏覽已經沒有問題:

   http://localhost:56321/aspx/show.aspx----可以改為下面的地址效果一樣,代表本地已經成功。

   http://localhost:56321/aspx/show-9.html

 3接下來是IIS的配置。(我的是win7  32位系統   IIS7)

   3.1將你的程序發布到iis與平時發布一樣,看看能否訪問。

 

 

   

  3.2選擇你的應用程序,雙擊中間的【處理程序映像】,進去后點擊右邊【添加腳本映射】如下圖:

    請求路徑:*.html

    可執行文件:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll(注意64位系統進Framework64文件夾)

    名稱隨意:

    

3.3再點擊右邊的【添加通配符腳本映射】

   請求路徑不管,可執行文件同【處理程序映像】一樣,名稱也隨意。

4.目前為止已經配置成功,注意上面代碼配置的格式是show-9.html,就是減號后面只有一個整數,這個可以修改規則。

謝謝!

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM