秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)
2019独角兽企业重金招聘Python工程师标准>>>
文章回顾:
1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用
2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程
3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL
附说:
为了加快 秋色园 和 CYQ.Data 数据框架 的开源速度及更好的发展,
目前正在寻找开源团队成员,有意向创业加入者,
欢迎点击看此贴:秋色园[CYQ.Data]开源团队寻人
OK,回到正题:
一:秋色园定位系统
先上一张图片:
从图中将可看到有很多的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:分离关键参数
秋色园一个分了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:原始请求地址:
4:其它细节处理
除了以上的关键点之外,秋色园还处理了其它很多杂七杂八的细节,例如:
4.1:虚拟目录
这是什么情况?
出现的情况?
在获取请求物理路径时,会多出一层的虚拟目录,导致很多问题。
比如你一个A文件链接为:href="/qblog",正常解析为www.cyqdata.com/qblog
如果你是放在子目录站点,将解析为www.cyqdata.com/目录名字/qblog
解决方法?
总结:
本节介绍了秋色园的定位系统,并分析其定位的基本URL解析重定向体系,从中我们可以看到,秋色园并没用采用配置文件+正则的方法解析,而是采用通过解析url,进行手工分类,并定位到相应的处理程序中的方法实现。
下节将为大伙介绍重定向定位后的第一接手人:Module.dll,
如何为人之父(基类),创建生命周期等过程。
转载于:https://my.oschina.net/secyaher/blog/274239
秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)相关推荐
- 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)
文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 本节,将从 ...
- 秋色园QBlog技术原理解析:性能优化篇:用户和文章计数器方案(十七)
2019独角兽企业重金招聘Python工程师标准>>> 上节概要: 上节 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及分库分散并发方案(十六) 中, 介绍了 ...
- 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)...
文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...
- 秋色园QBlog技术原理解析:Web之页面处理-内容填充(八)
文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...
- 秋色园QBlog技术原理解析:性能优化篇:打印页面SQL,全局的SQL语句优化(十三)...
文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...
- 秋色园QBlog技术原理解析:系列终结篇:最后的AOP策略(十九)
2019独角兽企业重金招聘Python工程师标准>>> 开篇闲话: 好几个月没写文章了,从9月15号发布新浪"微博粉丝精灵"V1.0后,持续的几个月都在折腾它,现 ...
- 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及超级分库分散并发方案(十六)...
上节回顾: 上节 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五) 中, 介绍了 秋色园QBlog 在性能优化方面,从技术的优化手段,开始步入数据库设计优化,并从数据的 ...
- 秋色园QBlog技术原理解析:开篇:整体认识(一)
2019独角兽企业重金招聘Python工程师标准>>> 很多网友表示对 秋色园 的实现原理感兴趣,有很多人,问了很多问题,包括: 1:URL地址怎么没有后缀? 2:多语言是怎么实现的 ...
- 秋色园QBlog高性能博客开放源码下载 限量下载1000次
写在开源前的几句话: 1:本次开放的源码为V1.0 版本源码,限量下载,次数为1000次. PS:目前下载量已近1000次,准备停止对外下载了,如果你是第1000次以外的下载者,想获取源码,你可以 ...
最新文章
- 云计算VDI相关职位招聘
- runnable和handler联合实现计时循环
- python3 打印完整报错信息 以flask 为例
- 十步完全理解 SQL
- WPF解决WindowsFormsHost背景透明
- 容器生态系统 (续) - 每天5分钟玩转容器技术(3)
- Web Security——英语写作与教学评价系统(iWrite)解决写作时禁止复制粘贴问题解决方案
- 1月4日云栖精选夜读:阿里工程师如何叫外卖?99%的人猜不到
- [DP思考录]向左走,向右走: Observer模式 VS Mediator模式
- intel x520网卡驱动_手工编译linux桌面内核(二)——硬件驱动的配置 下篇
- 5分钟轻松学Python:4行代码写一个爬虫
- 坚决反对“企业文学化”
- python3file函数_Python3 File(文件) 方法
- 罗德里格旋转公式——旋转轴的解法之一
- Minecraft 1.18.1、1.18.2模组开发 19.拼图结构建筑(JigSaw Structure)
- 【每日新闻】阿里云成中国唯一全面提供IPv6服务 | 区块链技术可以促进数据的共享以改进流程...
- 数字功放音质好不好?从哪些地方看
- 奇趣网站收藏家(网站)
- 自主换道模型总结_20180502
- DockerScan:Docker安全分析测试工具