运用ASP.NET进行URL重写的技术实现

2010-09-01 00:16:56郭乐明
赤峰学院学报·自然科学版 2010年5期
关键词:搜索引擎网页静态

郭乐明

(浙江农业商贸职业学院,浙江 绍兴 312000)

运用ASP.NET进行URL重写的技术实现

郭乐明

(浙江农业商贸职业学院,浙江 绍兴 312000)

本文阐述了URL重写(URL Rewriting)的用处:使URL简单易记;防止黑客攻击;满足搜索引擎需要;提高网站可移植性;防止盗链;使URL支持“可删节”的需求.本文分析了ASP.NET实现URL重写的机制,并重点论述了用ASP.NET进行URL重写的技术实现.

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

1 URL重写的用处

URL重写,实质上是将网页真实URL隐藏起来,使用户通过相应的虚拟URL(VirtualURL)访问网页资源,以便克服真实URL的许多不足.具体来讲,URL重写有以下几点用处:

1.1 满足搜索引擎需要,实现搜索引擎中排名优化.目前很多搜索引擎不支持动态链接,无法抓取动态网页,尤其是带“?”查询参数的网页,使网站许多信息无法被用户搜索到.即使搜索引擎支持动态链接,比如Google,它抓取动态网页的优先度也远远低于静态网页,这样就使动态网页的排名远远落后于静态网页.而URL重写很大程度上是用于将动态链接转换成静态链接,这将使得搜索引擎尽可能深地抓取网站子栏目的内容,使网页在搜索结果中排名靠前.

1.2 隐藏网页实现技术,增强网站安全性.如果网页上带着像.jsp/.asp/.aspx这样的扩展名,让人一看就知道网站是用什么技术实现的.但如果将http://server/test.aspx?id=3重写成http://server/test/3.htm,使黑客无法知晓网页的实现技术,大大降低了网页受攻击的可能性.

1.3 提高网站的移植性.由于真实URL含有实现技术语言的后缀信息(如.aspx/.asp/.jsp),当网站改变技术实现语言的时候,需要改动大量的链接,比如从.net平台的.aspx转成java平台的.jsp.而且,如果页面修改了扩展名,那么对于搜索

引擎而言就是一个新页面,它原先在搜索引擎中的PageR-ank也会随之消失,从头开始排名.如果用URL重写技术隐藏技术实现细节,修改移植就会很方便,而且完全不损失PageRank.

1.4 防止盗链.所谓盗链,是指盗用其他网站上相应资源的URL链接为自己网站所用.比如将别人网站上的图片或声音的URL写入自己的网页代码,使用户在访问网站时,能直接获得被盗用网站的资源.如果一个网站的资源经常被其他网站盗链,那么网站的性能将会大大下降.而如果将真实URL重写成虚拟URL,甚至附带强大的站外链接过滤功能,就可以防止盗链.

1.5 使URL简单易记,增加URL美感.比如可以把“http: //server/Detail.aspx?year=2009&month=12&day=30”重写成“http: //server/2009/12/30/”,这样,用户可以相当方便地访问网站.

1.6 使URL支持“可删节”的需求[1,2].“可删节”是一种极其重要的用户需求,通过URL重写,可以实现这种需求.比如将上例“http://server/2009/12/30/”中的日期删除,变成“http: //server/2009/12/”,能列出2009年12月的内容;继续删除URL中的月份,变成“http://server/2009/”,能列出2009年的内容等.

2 用ASP.NET实现URL重写的机制

如图1所示,当IIS(Internet服务管理器)接收到一个Web请求时,IIS 通过ISAPI筛选器(ISAPI Filter)检查被请求文件的扩展名以确定如何处理该请求.IIS可以自行处理静态资源的请求(如HTML页面、图像),或者将请求传递到ISAPI扩展(ISAPIExtension).比如asp文件使用asp.dll ISAPI扩展.对于ASP.NET文件,IIS会将请求传给aspnet_isapi.dll ISAPI扩展.然后aspnet_isapi.dll将处理操作传递给托管的ASP.NET进程(aspnet_wp.exe),该进程读取machine.config和web.config中配置的多个HTTP模块(HTTP Module),用对应的HTTP处理器(HTTP Handler)处理请求,并将处理结果(如由ASP.NET网页生成的HTML代码)返回给客户端.[2,3]

由图1可见,实现URL重写的关键是ISAPI:ISAPI Filter和ISAPI Extension,但是,ISAPI的开发和部署比较困难,在ISAPIFilter上实现URL重写难度比较大.由于ASP. NET引擎与IIS非常相似[2],所以可以利用ASP.NET的HTTP Module或HTTP Handler实现URL重写.其中,HTTP Module实现了类似于ISAPI Filter的功能,HTTP Handler实现了类似于ISAPI Extension的功能.

为了实现URL重写,ASP.NET需要创建和注册自定义HTTP Module或HTTP Handler,以便完成以下操作[2]:

(1)检查被请求的路径,以确定URL是否需要重写.

(2)如果URL需要重写,可以调用System.Web.Http-Context类的RewritePath()方法来重写路径.

3 如何用ASP.NET实现URL重写

3.1 为URL重写指定配置信息.在创建自定义HTTP Module或HTTP Handler之前,必须在machine.config(影响整个Web服务器)或web.config(针对特定的Web应用程序)的configuration/system.web 部分设置配置信息[5]:

或者:

3.2 编写URL重写规则.为了能使URL正确被重写,需要在web.config或其他文件中编写URL重写规则,以便确定需要重写的URL地址和URL转发的地址.一般使用可以序列化(Serializable)的结构:

3.3 选择合适的URL重写时机.由于ASP.NET不同的身份验证(Authorize)和文件授权方式(Authenticate)会对URL重写产生影响[2],所以应选择Global.asax文件中合适的事件来执行URL重写.

如果使用Windows身份验证和文件授权方式,则最好使用HTTP Module进行URL重写,而且必须由BeginRequest事件或AuthenticateRequest事件执行URL重写.对于窗体(Forms)验证,HTTP Module最好是由AuthorizeRequest事件执行重写.[2,7]

3.4 自定义URL重写方法.以HTTP Module为例:

URLRules rules=…… //用自定义的URLRules类获得3.2节的URL重写规则

//用自定义的Helper.Resolve方法将rules[i].Url转换为相应的目录

则,则进行相应替换

3.5 在Global.asax相应事件中执行自定义的URL重写方法.例如:

4 小结

本文详细阐述了URL重写的用处.实现机制和方法. URL重写之所以能在ASP.NET上实现,关键在于能利用ASP.NET的HttpContext类RewritePath()方法来重写路径,而无须改动复杂的ISAPI.然而,上述方法只针对一些扩展名的URL重写,如果要想处理所有文件类型的URL重写,甚至控制静态文件类型,则需要在上述基础上更为复杂的技术设置.

〔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处理及其应用[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

猜你喜欢
搜索引擎网页静态
静态随机存储器在轨自检算法
基于CSS的网页导航栏的设计
电子制作(2018年10期)2018-08-04 03:24:38
基于URL和网页类型的网页信息采集研究
电子制作(2017年2期)2017-05-17 03:54:56
网页制作在英语教学中的应用
电子测试(2015年18期)2016-01-14 01:22:58
网络搜索引擎亟待规范
中国卫生(2015年12期)2015-11-10 05:13:38
机床静态及动态分析
机电信息(2015年9期)2015-02-27 15:55:56
具7μA静态电流的2A、70V SEPIC/升压型DC/DC转换器
基于Nutch的医疗搜索引擎的研究与开发
10个必知的网页设计术语
广告主与搜索引擎的双向博弈分析