乙個url重寫例項

2021-05-22 14:27:08 字數 1293 閱讀 1268

需要對諸如http://song2.cn/viewnews/2009/3/2.html的url進行重寫.將其重寫為http://song2.cn/viewnews.aspx?id=2&year=2009&month=3

我們來看這個url, http://song2.cn/viewnews/2009/3/2.html(當然也可能是3.html,6.html,7.html).要重寫,首先是截獲url請求,然後分析當時的url,最後跳轉到相應的頁面.所以我們第一步是要截獲url請求.為此新建乙個類庫叫url,在該類庫中引用urlrewriter.dll.新建乙個類myrewritter.cs,**如下

可以看到該類繼承了urlrewriter.basemodulerewriter,然後在rewrite方法中加入了我們自己的邏輯.現在,只要當前的url請求是viewnews/2009/3/2.html,我們就會將頁面重寫到/viewnews.aspx?id=2&year=2009&month=3.

這只是乙個簡單的例子,實際上對於url的判斷,一般是用正規表示式來完成.而頁面和頁面間的對應關係,可能需要通過查詢資料庫完成.

接下來在**專案中引用這個類庫.然後修改下web.config,下面是我的web.config

大家可以看到我新加了個httpmodules.這個的作用是,如果有url請求,asp.net會先把請求傳到你指定的這個類中來.add那一行了,前面的是要接收請求的類,後面的是這個類所在的dll的名字.

全部完成了,編譯下專案(中文環境叫 生成),開啟url http://localhost/mytest/viewnews/2009/3/2.html,看會不會重寫到http://localhost//viewnews.aspx?id=2&year=2009&month=3

要注意的是,我的例子中,web**的url配置成了http://localhost:8011,你可能需要更改下這個配置.方法是在**專案上點右鍵,開啟屬性.然後在web頁面中修改.

作為乙個初學者,可能對這些東西感覺挺煩的.如果你不想看長篇大論,那最好的辦法就是看下我的**.我最近在學flex,對有些新東西也是處於忍無可忍的狀態.春天到了,大家都比較煩躁,所以,靜下心來,慢慢來.

更高階的內容看這裡

經典論壇交流

使用url重寫實現Session跟蹤

使用url重寫實現session跟蹤 這是在瀏覽器不支援cookie的情況下,servlet引入的一種補充的會話機制。當使用者發出下一次請求時,如果請求訊息中沒有包含cookie頭字 段,servlet引擎則認為客戶端不支援cookie,他將依據請求url引數中的會話標識號來實施會話跟蹤。這種方式要...

乙個簡單的檔案讀寫例項

1.開啟檔案與關閉檔案 1 linux中的檔案描述符fd的合法範圍是0或者乙個正正數,不可能是乙個負數。2 open返回的fd程式必須記錄好,以後向這個檔案的所有操作都要靠這個fd去對應這個檔案,最後關閉檔案時也需要fd去指定關閉這個檔案。如果在我們關閉檔案前fd丟掉了那就慘了,這個檔案沒法關閉了也...

yii2 0中url重寫實現方法

在yii框架裡有前台和後台頁面,舉例前台url重寫。控制器以controller作為字尾,繼承自yii web controller 動作以action作為字首,public訪問修飾 控制器id 類名去字尾,全部轉為小寫,如果是駝峰命名多個單詞轉為中槓分割 動作id 去字首,全部轉為小寫,如果是駝峰...