重提URL Rewrite:不同级别URL Rewrite的一些细节与特点[多图]
日期:2008年12月11日 作者:-
在之前的文章里我们已经谈论了有关URL Rewrite的几个主要的方面。在本系列的最后一篇文章中,我们就来讨论一下有关不同级别URL Rewrite的一些细节与特点。
理论上说,IIS级别的URL Rewrite使用C或C++编写,比使用托管代码编写的ASP.NET级别URL Rewrite性能要高。但是我认为这方面的差距在大部分情况下可以忽略不计,这种性能几乎不可能成为性能瓶颈。因此选择何种级别的URL Rewrite一般不会由您应用程序的性能要求来决定。那么到底应该使用哪种级别的URL Rewrite呢?在使用不同级别的URL Rewrite之后,我们又该注意点什么呢?我在这里谈谈我个人的看法。
对URL Rewrite功能上的要求
虽说目前的URL Rewrite组件在功能上已经能够满足大部分的应用,但是在某些时候,我们的确还是会需要一些特殊的功能。例如根据域名进行URL Rewrite,就目前的URL Rewrite组件来说,想要实现这个并不容易。商业化的ISAPI Rewrite目前已经可以支持这一点,可惜开源的UrlRewriter.NET和IIRF在这方面功能都有所不足。它们都是根据请求相对于该站点的路径来匹配,至于请求的是哪个域名并不能作为匹配条件来使用。这就要求我们对URL Rewrite组件进行扩展。对于大部分.NET开发人员来说,托管代码自然是开发首选,这时可能就要选择ASP.NET级别的URL Rewrite重写组件了。不过目前网上能找到不少扩展的例子,无论是ASP.NET级别的UrlRewriter.NET还是IIS级别的IIRF。
不过事实上,如果要实现上述功能,我们也可以分两步进行。首先我们在IIS级别使用IIRF进行URL Rewrite,接着在ASP.NET级别作进一步的URL Rewrite。例如我们现在要实现将“http://jeffz.domain.com/articles”重写为“/ArticleList.aspx?owner=jeffz”,就可以先在让IIRF做第一次URL Rewrite,目的是将“/articles”重写至“/ArticleList.aspx”。
RewriteRule ^/Articles$ /ArticleList.aspx [I, L, U]
这样,ASP.NET引擎就会直接接收到一个针对/ArticleList.aspx的请求了。然后在ASP.NET内部,我们可以作第二次的URL Rewrite(方便起见,我这里还是在Global.asax里写,在项目中还是建议使用额外的HttpModule来实现)。
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
string host = context.Request.Url.Host;
string owner = host.Substring(0, host.IndexOf('.'));
context.RewritePath(context.Request.RawUrl + "?owner=" + owner); - [1] [2] [3] 下一页
-
- 重提URL Rewrite:不同级别URL Rewrite的一些细节与特点[多图] 相关文章:
- 重提URL Rewrite:不同级别URL Rewrite的一些细节与特点[多图] 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
| ·《细节决定成败》 |
| ·一些实用的linux资料下载 |
| ·影响一生的饮食细节 |
| ·一些经典入侵动画教程 |
| ·Project URL Snooper V1.1 beta 1 汉化版 |
| ·如何跟不同性格的人沟通 |
| ·与众不同的心理学 |
| ·宝贝儿啼哭的9种不同含义 |
下一篇:Animation全接触(2):ParentAnimation模型[图]
精品推荐
相关分类
·网络安全 ·防范措施
·黑客技术 ·网络协议
·网络知识 ·路由技术
·Cisco网络 ·交换技术
·华为网络 ·网络管理
·无线技术 ·应用技巧
·网络方案 ·存储备份
·专题技术 ·通信技术
