成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

進(jìn)行URL重寫的技術(shù)實(shí)現(xiàn)

第26卷第5期2010年5月赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版)JournalofChifengUniversity(NaturalScienceEdition)V01.26No.5May2010運(yùn)用ASP.N

第26卷第5期2010年5月

赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版)

JournalofChifengUniversity(NaturalScienceEdition)

V01.26No.5May2010

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

郭樂明

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

摘要:本文闡述了17RI重寫mRewriting)的處:使URL簡單易記;防止黑客攻擊;滿足搜索引擎需要;提高網(wǎng)站

可移植性;防止盜鏈;使UR_L支持“可刪節(jié)”的需求.本文分析了ASP.NET實(shí)現(xiàn)URL重寫的機(jī)制。并重點(diǎn)論述了用ASP.NET

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

關(guān)鍵詞:ASP.NET;URL

中圖分類號:TP393.092

Rewriting;ISAPI;IlS;H'IT"P

Module;HTI'P

Handler

文獻(xiàn)標(biāo)識碼:A文章編號:1673-260X(2010)05-00194)2

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

PageRank.

URL重寫的用處

URL重寫,實(shí)質(zhì)上是將網(wǎng)貞真實(shí)URL隱藏起來,使用戶通過相應(yīng)的虛擬URL(Virtual用處:

1.1滿足搜索引擎需要,實(shí)現(xiàn)搜索引擎中排名優(yōu)化.目前很多搜索引擎不支持動態(tài)鏈接,無法抓取動態(tài)網(wǎng)頁,尤其是帶“?”查詢參數(shù)的網(wǎng)頁,使網(wǎng)站許多信息無法被用戶搜索到.即使搜索引擎支持動態(tài)鏈接,比如Goosle,它抓取動態(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重寫很大程度上是笄j于將動態(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,.鵲p,.aspx這樣的擴(kuò)展名,讓人一看就知道網(wǎng)站是用什么技術(shù)實(shí)現(xiàn)的.但如果將http://servedtest.aspx?id=3重寫成http://server/test/3.him,使黑客無法知曉網(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)語言的時候,需要改動大量的鏈接,比如從.net平臺的.aspx轉(zhuǎn)成ia-va平臺的.jsp.而且,如果貞面修改了擴(kuò)展名,那么對于搜索

IIS

URL)訪問網(wǎng)貞資源,以便

克服真實(shí)URL的許多不足.具體來講,URL重寫有以下幾點(diǎn)

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

1.5使URL簡單易記,增加URL美感.比如可以把“http://server/Detailaspx?,,ear=2009&month=12&day=3ff’重寫成‘lattpt//server/2009/12/30/”,這樣,用戶可以相當(dāng)方便地訪問網(wǎng)站.1.6使URL支持“可刪節(jié)”的需求ll-≈.“可刪節(jié)”是一種極其重要的用戶需求,通過URL重寫。可以實(shí)現(xiàn)這種需求.比如將上例“htlp://server/2009/12/30/”中的日期刪除,變成“http://艙rver/2009/12/”,能列出2009年12月的內(nèi)容;繼續(xù)刪除URL中的月份,變成“http:llserverl20091”,能列出2009年的內(nèi)容等.

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

如圖l所示,當(dāng)IIS(Intemet服務(wù)管理器)接收到一個

ASP.NET弓I擎

.aspx

lSAPIE)(ten商0n

Web請求

ISAPI

FjItor

\.

.a鞠

.asp

.90aP

,|aspnet_isapi.dII叫

asp.al|

—I

HTTPM。duIe

1Ir

HTTP二andIer

l將處理結(jié)果

l返回客戶端

圖lIIS和ASEN

T處理Web請求

net—isapi.dll

Web請求時,IIS通過ISAPI篩選器(IsAPIFiler)檢查被

ISAPI擴(kuò)展.然后aspnet_isapi.dll將處理操作傳

請求文件的擴(kuò)展名以確定如何處理該請求.IIs可以自行處理靜態(tài)資源的請求(如HTML頁面、圖像),或者將請求傳遞到ISAPI1琵(ISAPIExtension).比如asp文件使用asp.dUISAPI擴(kuò)展.對于ASP.NET文件,IIS會將請求傳給∞P

遞給托管的ASP.NET進(jìn)程洶pnetJ個.exe),該進(jìn)程讀取啪一

chine.eonfig和web.config中配置的多個H1TrP模塊(HfllP

Module),用對虛的HTI'P處理器(Hr】腫Handler)處理請

求,并將處理結(jié)果(如由ASP.NET網(wǎng)頁生成的HTML代碼)

一19一

萬方數(shù)據(jù)

,

返回給客戶端.1"2?3l

由圖1可見,實(shí)現(xiàn)URL重寫的關(guān)鍵是ISAPI:ISAPI

Filter和ISAPIExtension,但是,ISAPI的開發(fā)和部署比較困難。在ISAPI

Filter上實(shí)現(xiàn)URL重寫難度比較大-由于ASP.

NET引擎與IIS非常相似田,所以可以利用ASP.NET的

HTrI.P

Module或HTI'PHandler?qū)崿F(xiàn)URL重寫.其中,HTrP

Module實(shí)現(xiàn)了類似于ISAPIFilter的功能,HTrPHandler?qū)崿F(xiàn)了類似予ISAPIExtension的功能.

為了實(shí)現(xiàn)URL重寫,ASP.NET需要創(chuàng)建和注冊自定義

HTI'P

Module或HTI'PHandler。以便完成以下操作I-3:

(1)檢查被請求的路徑,以確定URL是否需要重寫.(2)如果URL需要重寫,可以調(diào)用System.Web.Http--Context類的RewritePath0方法來重寫路徑.

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

3.1

為URL重寫指定配置信息.在創(chuàng)建自定義H11'PMod—

uk或H11PHandler之前,必須在machine.config(影響整個Web服務(wù)器)或web.config(針對特定的Web應(yīng)用程序)的configuration/system.web部分設(shè)置配置信息閣:

<httpModules>

<add

type=”typel”n,l毗l'le=”namel”,>

<!一type值為HrrI’PModule的程序集(assembly)和

類名稱,而nBfne值提供了友好名稱,可以在Global.聃艤文件中使用此友好名稱來引用H'ITP

Module一>

</httpModulea>

或者:

<httpHandlers>

<add

verb=”verb”path=”pathl“type=”typel”,>

(!一應(yīng)確保path值中使用的擴(kuò)展名已從IlS映射到ASP.NET引擎.一>

</httpHandlers>

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

<URLRewriterRules>

<Rule>

<Url>重寫之前的URLf./UrI><Rewrite>重寫后的URL</Rewrite>

</Rule>

<,URLRewfiterRules>

3.3選擇合適的URL重寫時機(jī).由于ASP.NET不同的身份驗(yàn)證(Authorize)和文件授權(quán)方式(Authenticate)會對URL重寫產(chǎn)生影響I--'1。所以應(yīng)選擇Global.as強(qiáng)文件中合適的事件來執(zhí)行URL重寫.

如果使用Windows身份驗(yàn)證和文件授權(quán)方式,則最好使用H1TPModule進(jìn)行URL重寫,而且必須南BeginRequest事件或AuthentieateRequest事件執(zhí)行URL重寫.對于窗體(rom-.B)驗(yàn)證,H’幾甲Module最好是由AuthorizeRequest事件執(zhí)行重寫P?7】

3.4自定義URL重寫方法.以HTYP

Module為例:

public

class

MyURLRewriter{

public

static

void

Pro嗍O

URLRuks

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

一20一

萬方數(shù)據(jù)

forinti--0;……;i++),,遍歷每個規(guī)則

,,用自定義的Helper.Resolve方法將rules[i].Ud

轉(zhuǎn)換為相應(yīng)的目錄

string

URL=…’+Helper.Resolve(roles[i].Url)

+”¥”:

Regexregex=new

Regex(URL'RegexOptions.

IgnoreCase);

if(regexIsMatch(HttpContextCurrentRequestPath))l

string

URLRewrite=//如果找到匹配的規(guī)

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

regex.Replace(HttpContext.Current.Request.Path,

rules[i].Rewrite);

||重寫URL

if(URLRewrite.Length>O){

HttpContext.Current.RewritePath

ⅢRL-

Rewrite)',//執(zhí)行URL重寫

break;

})】

……l

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

protectedvoid

Application_BeginRequest(Object

sender,

EventArgs

e)

MyURLRewriter.ProcessO;)

4小結(jié)

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

參考文獻(xiàn):

【1]JakobNielsen.URL越UI[DB/OL].http:llwww.useit.

com/alertbox/990321.html.

(2)ScottMitchell.Lrg.LRewriting

in

ASP.NET[DB/OL].

http://msdn.microsoft.com/library/default.asp?ufl=/iibrary/en—us/dnaspp/html/uflrewrifmg.asp.

[3)MicheleLerouxBmtamante.1mideIIS&ASP.NET[DB/

oL】.http://www.theservemde.net/articles/showartide.tss?

id=IIS_ASP.

(4]孫亞民.ASP.Net中自定義Http處理及其應(yīng)用[DB/OL].

http:llwww.uml.org.cn/

C5)Microsoft.http://msdn.microsoR.com/library/[6]Mamoor

AhmedSiddiqui.HTTP

Handlers

and

H11'P

Modules

in

ASP.NET[DB/OL].http://www.15seconds.

com/issue/020417.htm

[7]ILichard

Birkby.URL

Rewriting塒山ASP.NETIDB/OL].

http://www.codeproject.com/aspnet/URLILewriter.asp.

,

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

作者:

作者單位:

刊名:

英文刊名:

年,卷(期):郭樂明浙江農(nóng)業(yè)商貿(mào)職業(yè)學(xué)院,浙江,紹興,312000赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版)JOURNAL OF CHIFENG UNIMERSITY2010,26(5)

參考文獻(xiàn)(7條)

1. Jakob Nielsen URL as UI

2. Scott Mitchell URL Rewriting in ASP.NET

3. Michele Leroux Bustamante Inside IIS&ASP.NET

4. 孫亞民 ASP.Net中自定義Http處理及其應(yīng)用

5. 查看詳情

6. Mansoor Ahmed Siddiqui HTTP Handlers and HTTP Modules in ASP.NET

7. Richard Birkby URL Rewriting with ASP.NET

本文讀者也讀過(10條)

1. 許禮捷. 周立峰. XU Li-jie. ZHOU Li-feng URL重寫技術(shù)實(shí)現(xiàn)網(wǎng)站偽靜態(tài)[期刊論文]-沙洲職業(yè)工學(xué)院學(xué)報(bào)2010,13(1)

2. 曲俊華. 朱海濤. 趙波 URL重寫技術(shù)在動態(tài)網(wǎng)站優(yōu)化中的應(yīng)用研究[期刊論文]-網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2011(9)

3. 高晻. 金玉玲. 劉凡儒 URL重寫技術(shù)及在國內(nèi)外授權(quán)訪問系統(tǒng)中的應(yīng)用研究[期刊論文]-現(xiàn)代情報(bào)2008,28(7)

4. 劉蓉. 王國順. 文亮. Liu Rong. WANG Guoshun. WEN Liang 一個基于ASP.NET與Yahoo Web APIs的搜索網(wǎng)站的實(shí)現(xiàn)

[期刊論文]-現(xiàn)代圖書情報(bào)技術(shù)2005(8)

5. 張濤. ZHANG Tao 淺談在.Net平臺下如何設(shè)計(jì)數(shù)據(jù)庫操作通用類[期刊論文]-山西科技2010,25(2)

6. 羅芳 使用ADO.NET讀取和寫入XML[期刊論文]-致富時代(下半月)2010(4)

7. 邢曉燕. 楊華. 廖鷹梅. XING Xiao-yan. YANG Hua. LIAO Ying-mei ASP.NET動態(tài)網(wǎng)頁中的數(shù)據(jù)傳遞技術(shù)[期刊論文]-電腦知識與技術(shù)2010,06(22)

8. 趙增敏 ASP.NET數(shù)據(jù)分頁技術(shù)的研究[期刊論文]-魅力中國2011(1)

9. 郭清菊 ASP.NET中頁面間傳值方法的實(shí)現(xiàn)[期刊論文]-軟件導(dǎo)刊2010,09(7)

10. 董一華 用ASP.NET實(shí)現(xiàn)URL重寫[期刊論文]-計(jì)算機(jī)時代2006(8)

本文鏈接:http://d.g.wanfangdata.com.cn/Periodical_cfxyxb201005009.aspx

標(biāo)簽: