国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ASP.net實(shí)現(xiàn)無擴(kuò)展名的URL重寫。簡單、方便、無需ISAPI

2019-11-18 16:38:31
字體:
供稿:網(wǎng)友

URL重寫已經(jīng)有很多的方法,但是多數(shù)都有一個(gè)缺點(diǎn),就是不支持無擴(kuò)展名的網(wǎng)頁。比如把http://blog.VeVb.com/category_1_1.htm 轉(zhuǎn)換為 http://blog.VeVb.com/category.aspx?id=1。

微軟提供的方法需要在根目錄里面建立jyk的文件夾,然后再建立一個(gè)default.aspx的文件,如果您有100名會(huì)員的話,這是一個(gè)不可想象的事情。

另一個(gè)方法就是使用ISAPI過濾器,但是這個(gè)一般需要在服務(wù)器上安裝一個(gè)DLL文件,自己沒有服務(wù)器就不好辦了。

下面提供一個(gè)可以說是我發(fā)明的一個(gè)方法——不知道以前有沒有人想到過——利用兩個(gè)特性來實(shí)現(xiàn)。

第一個(gè):IIS里面的找不到文件的錯(cuò)誤設(shè)置。

第二個(gè):asp.net 里面的Server.Transfer("topic.aspx?id=jyk");

這兩個(gè)結(jié)合起來就可以達(dá)到我們的目的了。

 

思路:利用404b錯(cuò)誤捕捉客戶的請(qǐng)求,再使用Server.Transfer轉(zhuǎn)向。

 

在我們?cè)L問http://www.aaa.com/jyk 的時(shí)候,假設(shè)這時(shí)服務(wù)器上沒有jyk文件夾,那么會(huì)返回什么結(jié)果呢?會(huì)返回一個(gè)“無法找到該頁”的頁面,那么這個(gè)返回結(jié)果能不能自己控制一下呢?很幸運(yùn)IIS提供了這個(gè)功能,我們可以把這樣的錯(cuò)誤指定到網(wǎng)站里的一個(gè)頁面。

 

操作步驟:

第一步:打開IIS管理器,網(wǎng)站屬性——自定義錯(cuò)誤標(biāo)簽——404錯(cuò)誤——點(diǎn)擊修改——修改“消息類型”為“URL”,在下面的文本框里填寫處理這個(gè)錯(cuò)誤得頁面名稱,比如/none.aspx。

第二步:在我們的網(wǎng)站根目錄下建立一個(gè)none.aspx的網(wǎng)頁。在里面隨意寫點(diǎn)內(nèi)容(測試用)。

 

設(shè)置完畢,這時(shí)再訪問http://www.aaa.com/jyk,顯示的就是 none.aspx的網(wǎng)頁內(nèi)容了。注意這時(shí)瀏覽器里面的URL地址仍然是http://www.aaa.com/jyk,而不是http://www.aaa.com/none.aspx 。這一點(diǎn)很重要,如果地址變了,那就沒有意義了。

那么我們?cè)趺窗秧撁孓D(zhuǎn)到我們希望的頁面呢,這時(shí)所有的找不到文件的情況都會(huì)轉(zhuǎn)到none.aspx文件,顯然這不是我們想要的最終結(jié)果。那么我們?cè)趺传@取客戶輸入的網(wǎng)址呢?

打開none.aspx的后臺(tái)文件,

 

string URL = Request.Url.Query;
 

我們可以使用上面的語句來獲取URL地址,得到的地址格式是:

?404http://www.aaa.com/jyk

其中 “?404”是固定的,過濾掉它就是瀏覽器里面的URL地址了。

剩下的事情就是根據(jù)情況來轉(zhuǎn)換網(wǎng)頁了。可以拆串,再用switch來判斷;也可以用正則表達(dá)式來判斷。因?yàn)槲艺齽t不熟,我采用的是switch的方式。正則表達(dá)式請(qǐng)參考其他的資料,我也在找,如果您找到了請(qǐng)共享一下,謝謝。

優(yōu)點(diǎn):

1、 支持無擴(kuò)展名的網(wǎng)頁。不用建立文件夾和文件。

2、 思路簡單,用法也很簡單,代碼也不復(fù)雜,不涉及高深的理論;

3、 支持搜索引擎,就是說可以被各大搜索引擎搜錄。

4、 可以配合域名泛解析使用。

缺點(diǎn):

1、 需要修改一下IIS 404b錯(cuò)誤的處理方法;

2、 效率要略微低一點(diǎn)。

3、 如果您只使用.aspx的擴(kuò)展名的話就可以不用修改IIS了。

4、 Asp不支持。因?yàn)閍sp的Server.Transfer不能帶參數(shù)(?id=jyk),不能傳遞參數(shù)的重寫幾乎沒有什么意義。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西昌市| 板桥市| 巴林右旗| 庆城县| 屏边| 同江市| 嵩明县| 吴旗县| 江口县| 景德镇市| 都江堰市| 师宗县| 辰溪县| 靖安县| 嵊州市| 蓬莱市| 防城港市| 资源县| 黎城县| 左云县| 雷波县| 松桃| 大城县| 峨眉山市| 苏州市| 信丰县| 元谋县| 东乌| 厦门市| 永泰县| 古蔺县| 莱芜市| 会东县| 额济纳旗| 双鸭山市| 南充市| 庐江县| 仪征市| 永年县| 呈贡县| 潍坊市|