秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)

文章回顾:

1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用

2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程

3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL

 

附说:

为了加快 秋色园 和 CYQ.Data 数据框架 的开源速度及更好的发展,

目前正在寻找开源团队成员,有意向创业加入者,

欢迎点击看此贴:秋色园[CYQ.Data]开源团队寻人

 

OK,回到正题:

 

一:秋色园定位系统

 

从上节知道,秋色园的重定向原理,是将一个原始任意的请求,定位到相应的处理程序中,这个处理程序可以是aspx,也可以是ashx。

先上一张图片:

从图中将可看到有很多的ashx处理程序,这些处理程序,是如何被安排工作的呢?

 

请看:秋色园的内部URL定位系统:

 

系统定位:

http://www.cyqdata.com/ 主站(技术频道)的请求,定位到:Home_Tech.ashx

http://www.cyqdata.com/health 健康频道的请求,定位到:Home_Health.ashx

http://www.cyqdata.com/sys/login sys(包括登陆退出注册的)的请求,定位到:RegLogin.ashx

http://www.cyqdata.com/error 错误的请求,定位到:Error.ashx

 

用户定位:

http://www.cyqdata.com/qblog 用户博客,定位到:Index.ashx

http://www.cyqdata.com/qblog/admin 用户后台,定位到:Admin.ashx

http://www.cyqdata.com/qblog/article 用户文章,定位到:Article.ashx

http://www.cyqdata.com/picture/photo/ 用户图片,将定位到:Photo.ashx

 

Rss定位,包括主站和用户:

http://www.cyqdata.com/rss

http://www.cyqdata.com/qblog/rss 两个都定位到Rss.ashx

 

还有一个Home.ashx

原来在秋色园的V2.5之前,只存在一个主站,后来增加了“健康频道”之后,秋色园更改原来策略,将主站改造为一个频道,技术频道,于是出现三个频道:

技术频道、健康频道、用户频道。

根据配置文件,你可以将主站定位到任意频道中,简单说秋色园本无主站,只是你把www指向某个频道,于是某个频道就成了主站,如此的处理方式,有利于扩展N个频道内容,而主站,只要任意指定即可。

 

二:重定向的内部逻辑

 

了解了秋色园的定位系统方向之后,要解析的就是内部细节要处理的问题了。

当UrlRewrite接到一个陌生的请求时,需要做以下的事情:

 

1:判断本URL是否需要定位

简单的分析为:如果是图片/js/css等,你需要直接return,因为不需要重定向。

而有一些简单需要重定向:比如直接.mdb,.ashx类型的文件时,你可以重定向到error.ashx去处理,告知用户不允许直接访问。

 

2:分析URL,是主站请求,还是用户请求

因为主站请求和用户请求是有区别的,比如:

http://www.cyqdata.com/health 这是一个系统频道

http://www.cyqdata.com/qblog 这只是一个qblog用户

那就得分析了,秋色园的做法就是将主站关键字存起来,不是关键字的都定为用户,同时将长度小于4的为系统预留。

 

3:分离关键参数

总不能用户怎么请求来,就原封不动的转给相应的ashx处理程序吧,这样会加大ashx的工作量,因此,在这一步就分好,是非常有必要的。

秋色园一个分了3个参数:u={0}&type={1}& para={2}

3.1:用户名:从URL中找出分类关键字用户名

示例:如URL为以下形式的请求:

qblog.cyqdata.com

www.cyqdata.com/qblog

需要从中分离出u=qblog,如果取出的是系统关键字,则为空

3.2:类型:从URL中找出分类关键字如:article、phpto、health、tech等

示例:如URL为以下形式的请求:

www.cyqdata.com/qblog

www.cyqdata.com/qblog/article

www.cyqdata.com/qblog/photo

需要从中分离出type=article或type=photo,如果没有,默认就是index

3.3:原始请求地址:

在某些业务处理中,你需要记录原始请求的URL,这时候就可以轻松的拿到了

 

4:其它细节处理

除了以上的关键点之外,秋色园还处理了其它很多杂七杂八的细节,例如:

4.1:虚拟目录

这是什么情况?

简单的说就是:购了一个虚拟主机,主机支持一个站点,同时支持N个子目录。所谓的子目录,大体就是在主机目录下新建多一个文件夹来放站点。

出现的情况?

在获取请求物理路径时,会多出一层的虚拟目录,导致很多问题。

比如你一个A文件链接为:href="/qblog",正常解析为www.cyqdata.com/qblog

如果你是放在子目录站点,将解析为www.cyqdata.com/目录名字/qblog

解决方法?

秋色园采用配置方式,然后在请求时移除子目录名。

 

总结:

本节介绍了秋色园的定位系统,并分析其定位的基本URL解析重定向体系,从中我们可以看到,秋色园并没用采用配置文件+正则的方法解析,而是采用通过解析url,进行手工分类,并定位到相应的处理程序中的方法实现。

 

下节将为大伙介绍重定向定位后的第一接手人:Module.dll,

如何为人之父(基类),创建生命周期等过程。

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2011/02/22/1960293.html

时间: 2024-09-19 09:24:50

秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)的相关文章

秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用   2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程   本节,将从 秋色园 的整站入口:UrlRewrite.dll入手解析无后缀原理.   鉴于园子里有很多UrlRewrite的文章,因此就不略为简单的讲解了:   一:用ISAPI筛选器:即网上第三方发布的比较常见的,如:RewriteEval.dll   秋色园早期的版本始于2007,使用的就是第三方

秋色园QBlog技术原理解析:性能优化篇:字节、缓存、并发(十二)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:性能优化篇:access的并发极限及超级分库分散并发方案(十六)

上节回顾:   上节 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五) 中, 介绍了 秋色园QBlog 在性能优化方面,从技术的优化手段,开始步入数据库设计优化,并从数据的使用情况上进行了分析,从而将文章内容进行分离,得到新的分表,由于内容比较大,进而分了库,达到一种基础减压.   本节内容:   本节将介绍秋色园 QBlog 的Super分库方案,以及何以如此Super分库的原因.   描述说明:   在进行上了上节的分库方案后,虽然感觉一度秋色园QBlog的访

秋色园QBlog技术原理解析:性能优化篇:用户和文章计数器方案(十七)

上节概要:   上节 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及分库分散并发方案(十六) 中, 介绍了 Access的并发上限,及从某种程度上 秋色园QBlog 针对并发上限进行了多个数据的划分,从而最大并发上限从64提升到64*N(个数据库),虽然总和的最大并发值是上升了,但是单个库的最大值并没有变化,或者说单个表的最大并发值没有发生变化,上限仍是64. 于是,对于频繁产生更新操作的访问计数器(用户表及文章表),是该进入优化的方案了.   本节概要:   本节将介绍秋色

秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:认识整站处理流程(二)

在上一节 秋色园QBlog技术原理解析:开篇:整体认识(一) 中,   我们了解了 秋色园 的整体结构,包括文件目录及文件的结构及作用.   本节,将解析 秋色园 的业务处理流程: 看一下Bin目录都有哪些内库,如下图:   以一个简单的请求来看一下,秋色园各dll[即各个项目]之间是怎么分工处理的:   1:用户访问 秋色园 如:http://www.cyqdata.com/   2:UrlRewrite.dll:第一时间接受请求,根据各种规则判断,将请求往下仍   3:Module.dll:

秋色园QBlog技术原理解析:独创的多语言翻译机制(九)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:Web之页面处理-内容填充(八)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建

秋色园QBlog技术原理解析:页面内容填充及多语言翻译流程演示示例(十)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序 5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建