• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      運(yùn)用ASP.NET進(jìn)行URL重寫的技術(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ù)實現(xiàn)

      郭樂明

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

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

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

      1 URL重寫的用處

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

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

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

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

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

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

      1.5 使URL簡單易記,增加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重寫,可以實現(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實現(xiàn)URL重寫的機(jī)制

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

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

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

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

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

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

      3.1 為URL重寫指定配置信息.在創(chuàng)建自定義HTTP Module或HTTP Handler之前,必須在machine.config(影響整個Web服務(wù)器)或web.config(針對特定的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重寫時機(jī).由于ASP.NET不同的身份驗證(Authorize)和文件授權(quán)方式(Authenticate)會對URL重寫產(chǎn)生影響[2],所以應(yīng)選擇Global.asax文件中合適的事件來執(zhí)行URL重寫.

      如果使用Windows身份驗證和文件授權(quán)方式,則最好使用HTTP Module進(jìn)行URL重寫,而且必須由BeginRequest事件或AuthenticateRequest事件執(zhí)行URL重寫.對于窗體(Forms)驗證,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重寫的用處.實現(xiàn)機(jī)制和方法. URL重寫之所以能在ASP.NET上實現(xiàn),關(guān)鍵在于能利用ASP.NET的HttpContext類RewritePath()方法來重寫路徑,而無須改動復(fù)雜的ISAPI.然而,上述方法只針對一些擴(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ī)存儲器在軌自檢算法
      基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計
      電子制作(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)用
      電子測試(2015年18期)2016-01-14 01:22:58
      網(wǎng)絡(luò)搜索引擎亟待規(guī)范
      機(jī)床靜態(tài)及動態(tài)分析
      具7μA靜態(tài)電流的2A、70V SEPIC/升壓型DC/DC轉(zhuǎn)換器
      基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
      10個必知的網(wǎng)頁設(shè)計術(shù)語
      廣告主與搜索引擎的雙向博弈分析
      揭阳市| 平舆县| 临安市| 渭南市| 阿瓦提县| 乌鲁木齐县| 海口市| 永济市| 门源| 邳州市| 平南县| 柞水县| 云霄县| 奉节县| 甘德县| 安达市| 自贡市| 延安市| 桓仁| 武冈市| 博罗县| 合江县| 垣曲县| 赣州市| 靖安县| 富阳市| 瓮安县| 莎车县| 弥勒县| 遵义县| 壤塘县| 白朗县| 兰州市| 万荣县| 融水| 台安县| 礼泉县| 玉林市| 马山县| 繁峙县| 泉州市|