在ASP.NET中用MSDNURLRewriting实现Url Rewriting

时间:2021-05-25

作者:Scott Mitchell
翻译:Janssen

1.0.请一定要抱着批评的态度来看该文章

1.1.概要
分析如何使用微软提供的ASP.NET来对动态产生的URL地址进行网址重写。网址重写是实现一种截取网址请求并将其进行处理后重新指向到一个指定的网址的过程。作者本人在对各种实现网址重写的技术进行研究和探讨后得出的经验和方法,希望能对您有所帮助。

1.2.内容简介
稍微花点时间看一看你做的网站里头的URL地址,你看到类似这样的地址吗http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary ?也许你会出于某种目的把大量的页面文件从一个目录甚至一个网站转移到其他地方,而许多访问者出于个人兴趣或者研究目的之前就已经将原有网址收藏了起来, 如果这时他从收藏夹打开该页面的时候发现这已经是坏链了。本文旨在介绍如何使用网址重写将那些“难看”的网址转换成比较有实际意义的网址,使其便于记忆。例如将http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary转换成如下地址:http://yoursite.com/ dispEmployeeInfo/459-099/summary.html 。我们甚至发现网址重写技术可以解决令人头疼的404错误,或者说它可以创建一个智能化的404错误解决方案。
如上所述,网址重写是实现一种截取网址请求并将其进行处理后重新指向到一个指定的网址的过程。在网址重写执行的期间,相应处理程序处理被请求的网址,从中提取出相关的值,然后重新指向一个新的指定地址。例如:由于一次网站目录调整,原有的 /people/ 子目录下的所有网页全部移动到/info/employees/目录,原访问者从收藏夹或者其他什么地方点击链接发出访问/people/目录下的文件的请求时,你肯定希望他还是能通过原有地址看到和原来相同的页面,但实际上看到的却是网址重写指向的新目录下的相应文件。
在老版本ASP中,使用网址重写技术的途径很少,要么写一个ISAPI过滤器,要么购买第三方厂商提供的网址重写组件,然而在微软提供的ASP.NET下你可以通过多种方法很简单地开发出自己的网址重写软件,以满足自己各种不同的需要。本文将和你一起讨论这门针对ASP.NET开发人员的实现网址重写的技术,然后举一些网址重写实际应用的例子。在我们深入探讨网址重写技术的细节之前,我们先看一下日常使用网址重写技术实现的场景。

1.3.网址重写的一般用途
创建一个数据操作的ASP.NET程序最常见的就是一个aspx页面后面带上一些查询参数集合。例如在设计一个电子商务网站的时候,假定你设计了一项功能允许用户浏览待售的商品,为了更加方便操作,你设计了一个页面displayCategory.aspx将商品按照给定的分类显示,那么该分类下的商品显示页面上应该在页面文件对应网址后面加上了一个商品分类的查询参数,例如用户要查询待售的“装饰品”,在数据库中所有的装饰品数据对应的分类编号CategoryID的值为5,那么用户会访问如下网址:http://yoursite.com/displayCategory.aspx?CategoryID=5。
创建一个包含类似这样网址的网站最终有两种结果,首先从最终用户的角度来观察,http://yoursite.com/displayCategory.aspx?CategoryID=5 这个网址有些杂乱,可行性分析专家Jakob Neilson(主页:http://useit.com/) 建议选择网址显示方式时候考虑如下要求(参考网址:http:///download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi
《深入研究IIS与ASP.NET》(Inside IIS and ASP.NET) 作者:Michele Leroux Bustamante
工作参考:网址重写是一个颇受欢迎的主题,不论是ASP.NET还是其他竞争对手都对其表示出巨大的关注。例如:Apache Web Server提供了一个叫做mod_rewriting的模块,mod_rewriting是个功能完善的网址重写引擎,它提供基于HTTP 头信息和服务器参数环境的网址重写功能,甚至还提供用正则表达式来创建网址重写规则。有关mod_rewriting更多信息请参考A User's Guide to URL Rewriting with the Apache Web Server《Apache Web Server网址重写用户向导》。
这里有相当数量的关于ASP.NET级别下网址重写的文章:
Rewrite.NET - A URL Rewriting Engine for .NET探讨模拟mod_rewriting的正则表达式描述的网址重写规则来实现ASP.NET下网址重写;
URL Rewriting With ASP.NET提供对ASP.NET下网址重写能力的总的概述;
Ian Griffiths有一个Blog,上面有许多有关在ASP.NET中实现网址重写的建议,比如本文所提到的考虑到数据回送时的做法;
Fabrice Marguerie和Jason Salas都各有一个Blog,在上面可以找到有关将ASP.NET网址重写来推动搜索引擎的查找替换的文章。
(Fabrice Marguerie: http://weblogs.asp.net/fmarguerie/archive/2003/12/24/45712.aspx)
(Jason Salas: http://weblogs.asp.net/jasonsalas/archive/2003/12/14/43404.aspx)

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章