国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

運(yùn)用ASP.NET進(jìn)行URL重寫的技術(shù)實(shí)現(xiàn)

2010-09-01 00:16:56郭樂明
關(guān)鍵詞:搜索引擎網(wǎng)頁靜態(tài)

郭樂明

(浙江農(nóng)業(yè)商貿(mào)職業(yè)學(xué)院,浙江 紹興 312000)

運(yùn)用ASP.NET進(jìn)行URL重寫的技術(shù)實(shí)現(xiàn)

郭樂明

(浙江農(nóng)業(yè)商貿(mào)職業(yè)學(xué)院,浙江 紹興 312000)

本文闡述了URL重寫(URL Rewriting)的用處:使URL簡(jiǎn)單易記;防止黑客攻擊;滿足搜索引擎需要;提高網(wǎng)站可移植性;防止盜鏈;使URL支持“可刪節(jié)”的需求.本文分析了ASP.NET實(shí)現(xiàn)URL重寫的機(jī)制,并重點(diǎn)論述了用ASP.NET進(jìn)行URL重寫的技術(shù)實(shí)現(xiàn).

ASP.NET;URL Rewriting;ISAPI;IIS;HTTP Module;HTTP Handler

1 URL重寫的用處

URL重寫,實(shí)質(zhì)上是將網(wǎng)頁真實(shí)URL隱藏起來,使用戶通過相應(yīng)的虛擬URL(VirtualURL)訪問網(wǎng)頁資源,以便克服真實(shí)URL的許多不足.具體來講,URL重寫有以下幾點(diǎn)用處:

1.1 滿足搜索引擎需要,實(shí)現(xiàn)搜索引擎中排名優(yōu)化.目前很多搜索引擎不支持動(dòng)態(tài)鏈接,無法抓取動(dòng)態(tài)網(wǎng)頁,尤其是帶“?”查詢參數(shù)的網(wǎng)頁,使網(wǎng)站許多信息無法被用戶搜索到.即使搜索引擎支持動(dòng)態(tài)鏈接,比如Google,它抓取動(dòng)態(tài)網(wǎng)頁的優(yōu)先度也遠(yuǎn)遠(yuǎn)低于靜態(tài)網(wǎng)頁,這樣就使動(dòng)態(tài)網(wǎng)頁的排名遠(yuǎn)遠(yuǎn)落后于靜態(tài)網(wǎng)頁.而URL重寫很大程度上是用于將動(dòng)態(tài)鏈接轉(zhuǎn)換成靜態(tài)鏈接,這將使得搜索引擎盡可能深地抓取網(wǎng)站子欄目的內(nèi)容,使網(wǎng)頁在搜索結(jié)果中排名靠前.

1.2 隱藏網(wǎng)頁實(shí)現(xiàn)技術(shù),增強(qiáng)網(wǎng)站安全性.如果網(wǎng)頁上帶著像.jsp/.asp/.aspx這樣的擴(kuò)展名,讓人一看就知道網(wǎng)站是用什么技術(shù)實(shí)現(xiàn)的.但如果將http://server/test.aspx?id=3重寫成http://server/test/3.htm,使黑客無法知曉網(wǎng)頁的實(shí)現(xiàn)技術(shù),大大降低了網(wǎng)頁受攻擊的可能性.

1.3 提高網(wǎng)站的移植性.由于真實(shí)URL含有實(shí)現(xiàn)技術(shù)語言的后綴信息(如.aspx/.asp/.jsp),當(dāng)網(wǎng)站改變技術(shù)實(shí)現(xiàn)語言的時(shí)候,需要改動(dòng)大量的鏈接,比如從.net平臺(tái)的.aspx轉(zhuǎn)成java平臺(tái)的.jsp.而且,如果頁面修改了擴(kuò)展名,那么對(duì)于搜索

引擎而言就是一個(gè)新頁面,它原先在搜索引擎中的PageR-ank也會(huì)隨之消失,從頭開始排名.如果用URL重寫技術(shù)隱藏技術(shù)實(shí)現(xiàn)細(xì)節(jié),修改移植就會(huì)很方便,而且完全不損失PageRank.

1.4 防止盜鏈.所謂盜鏈,是指盜用其他網(wǎng)站上相應(yīng)資源的URL鏈接為自己網(wǎng)站所用.比如將別人網(wǎng)站上的圖片或聲音的URL寫入自己的網(wǎng)頁代碼,使用戶在訪問網(wǎng)站時(shí),能直接獲得被盜用網(wǎng)站的資源.如果一個(gè)網(wǎng)站的資源經(jīng)常被其他網(wǎng)站盜鏈,那么網(wǎng)站的性能將會(huì)大大下降.而如果將真實(shí)URL重寫成虛擬URL,甚至附帶強(qiáng)大的站外鏈接過濾功能,就可以防止盜鏈.

1.5 使URL簡(jiǎn)單易記,增加URL美感.比如可以把“http: //server/Detail.aspx?year=2009&month=12&day=30”重寫成“http: //server/2009/12/30/”,這樣,用戶可以相當(dāng)方便地訪問網(wǎng)站.

1.6 使URL支持“可刪節(jié)”的需求[1,2].“可刪節(jié)”是一種極其重要的用戶需求,通過URL重寫,可以實(shí)現(xiàn)這種需求.比如將上例“http://server/2009/12/30/”中的日期刪除,變成“http: //server/2009/12/”,能列出2009年12月的內(nèi)容;繼續(xù)刪除URL中的月份,變成“http://server/2009/”,能列出2009年的內(nèi)容等.

2 用ASP.NET實(shí)現(xiàn)URL重寫的機(jī)制

如圖1所示,當(dāng)IIS(Internet服務(wù)管理器)接收到一個(gè)Web請(qǐng)求時(shí),IIS 通過ISAPI篩選器(ISAPI Filter)檢查被請(qǐng)求文件的擴(kuò)展名以確定如何處理該請(qǐng)求.IIS可以自行處理靜態(tài)資源的請(qǐng)求(如HTML頁面、圖像),或者將請(qǐng)求傳遞到ISAPI擴(kuò)展(ISAPIExtension).比如asp文件使用asp.dll ISAPI擴(kuò)展.對(duì)于ASP.NET文件,IIS會(huì)將請(qǐng)求傳給aspnet_isapi.dll ISAPI擴(kuò)展.然后aspnet_isapi.dll將處理操作傳遞給托管的ASP.NET進(jìn)程(aspnet_wp.exe),該進(jìn)程讀取machine.config和web.config中配置的多個(gè)HTTP模塊(HTTP Module),用對(duì)應(yīng)的HTTP處理器(HTTP Handler)處理請(qǐng)求,并將處理結(jié)果(如由ASP.NET網(wǎng)頁生成的HTML代碼)返回給客戶端.[2,3]

由圖1可見,實(shí)現(xiàn)URL重寫的關(guān)鍵是ISAPI:ISAPI Filter和ISAPI Extension,但是,ISAPI的開發(fā)和部署比較困難,在ISAPIFilter上實(shí)現(xiàn)URL重寫難度比較大.由于ASP. NET引擎與IIS非常相似[2],所以可以利用ASP.NET的HTTP Module或HTTP Handler實(shí)現(xiàn)URL重寫.其中,HTTP Module實(shí)現(xiàn)了類似于ISAPI Filter的功能,HTTP Handler實(shí)現(xiàn)了類似于ISAPI Extension的功能.

為了實(shí)現(xiàn)URL重寫,ASP.NET需要?jiǎng)?chuàng)建和注冊(cè)自定義HTTP Module或HTTP Handler,以便完成以下操作[2]:

(1)檢查被請(qǐng)求的路徑,以確定URL是否需要重寫.

(2)如果URL需要重寫,可以調(diào)用System.Web.Http-Context類的RewritePath()方法來重寫路徑.

3 如何用ASP.NET實(shí)現(xiàn)URL重寫

3.1 為URL重寫指定配置信息.在創(chuàng)建自定義HTTP Module或HTTP Handler之前,必須在machine.config(影響整個(gè)Web服務(wù)器)或web.config(針對(duì)特定的Web應(yīng)用程序)的configuration/system.web 部分設(shè)置配置信息[5]:

或者:

3.2 編寫URL重寫規(guī)則.為了能使URL正確被重寫,需要在web.config或其他文件中編寫URL重寫規(guī)則,以便確定需要重寫的URL地址和URL轉(zhuǎn)發(fā)的地址.一般使用可以序列化(Serializable)的結(jié)構(gòu):

3.3 選擇合適的URL重寫時(shí)機(jī).由于ASP.NET不同的身份驗(yàn)證(Authorize)和文件授權(quán)方式(Authenticate)會(huì)對(duì)URL重寫產(chǎn)生影響[2],所以應(yīng)選擇Global.asax文件中合適的事件來執(zhí)行URL重寫.

如果使用Windows身份驗(yàn)證和文件授權(quán)方式,則最好使用HTTP Module進(jìn)行URL重寫,而且必須由BeginRequest事件或AuthenticateRequest事件執(zhí)行URL重寫.對(duì)于窗體(Forms)驗(yàn)證,HTTP Module最好是由AuthorizeRequest事件執(zhí)行重寫.[2,7]

3.4 自定義URL重寫方法.以HTTP Module為例:

URLRules rules=…… //用自定義的URLRules類獲得3.2節(jié)的URL重寫規(guī)則

//用自定義的Helper.Resolve方法將rules[i].Url轉(zhuǎn)換為相應(yīng)的目錄

則,則進(jìn)行相應(yīng)替換

3.5 在Global.asax相應(yīng)事件中執(zhí)行自定義的URL重寫方法.例如:

4 小結(jié)

本文詳細(xì)闡述了URL重寫的用處.實(shí)現(xiàn)機(jī)制和方法. URL重寫之所以能在ASP.NET上實(shí)現(xiàn),關(guān)鍵在于能利用ASP.NET的HttpContext類RewritePath()方法來重寫路徑,而無須改動(dòng)復(fù)雜的ISAPI.然而,上述方法只針對(duì)一些擴(kuò)展名的URL重寫,如果要想處理所有文件類型的URL重寫,甚至控制靜態(tài)文件類型,則需要在上述基礎(chǔ)上更為復(fù)雜的技術(shù)設(shè)置.

〔1〕Jakob Nielsen.URL asUI[DB/OL].http://www.useit. com/alertbox/990321.html.

〔2〕Scott Mitchell.URL Rewriting in ASP.NET[DB/OL].http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnaspp/html/urlrewriting.asp.

〔3〕Michele Leroux Bustamante.Inside IIS&ASP.NET[DB/ OL].http://www.theserverside.net/articles/showarticle.tss? id=IIS_ASP.

〔4〕孫亞民.ASP.Net中自定義Http處理及其應(yīng)用[DB/OL]. http://www.uml.org.cn/

〔5〕Microsoft.http://msdn.microsoft.com/library/

〔6〕Mansoor Ahmed Siddiqui.HTTP Handlers and HTTP Modulesin ASP.NET[DB/OL].http://www.15seconds. com/issue/020417.htm

〔7〕Richard Birkby.URL Rewriting with ASP.NET[DB/OL].http://www.codeproject.com/aspnet/URLRewriter.asp.

TP393.092

A

1673-260X(2010)05-0019-02

猜你喜歡
搜索引擎網(wǎng)頁靜態(tài)
靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計(jì)
電子制作(2018年10期)2018-08-04 03:24:38
基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
電子制作(2017年2期)2017-05-17 03:54:56
網(wǎng)頁制作在英語教學(xué)中的應(yīng)用
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
機(jī)床靜態(tài)及動(dòng)態(tài)分析
具7μA靜態(tài)電流的2A、70V SEPIC/升壓型DC/DC轉(zhuǎn)換器
基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
10個(gè)必知的網(wǎng)頁設(shè)計(jì)術(shù)語
廣告主與搜索引擎的雙向博弈分析
霍山县| 砚山县| 宜章县| 宜兴市| 深水埗区| 阿荣旗| 正安县| 怀仁县| 临邑县| 邯郸县| 土默特右旗| 佳木斯市| 全椒县| 苏州市| 沙雅县| 济阳县| 图木舒克市| 太康县| 西昌市| 都匀市| 尼木县| 漳浦县| 扬州市| 长阳| 前郭尔| 万盛区| 蓬溪县| 华安县| 合水县| 金溪县| 兰州市| 博爱县| 喀喇| 定陶县| 临夏市| 农安县| 株洲县| 泸水县| 蒙自县| 铜梁县| 翁源县|