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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:
文章回顾:
1:  秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用
2:  秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程
 
附说:
为了加快  秋色园 和  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定位,包括主站和用户:
 
还有一个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
需要从中分离出u=qblog,如果取出的是系统关键字,则为空
3.2:类型:从URL中找出分类关键字如:article、phpto、health、tech等
示例:如URL为以下形式的请求:
需要从中分离出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,
如何为人之父(基类),创建生命周期等过程。




     本文转自cyq1162 51CTO博客,原文链接: http://blog.51cto.com/cyq1162/499457 ,如需转载请自行联系原作者


相关文章
模型无关的局部解释(LIME)技术原理解析及多领域应用实践
在当前数据驱动的商业环境中,人工智能(AI)和机器学习(ML)已成为各行业决策的关键工具,但随之而来的是“黑盒”问题:模型内部机制难以理解,引发信任缺失、监管合规难题及伦理考量。LIME(局部可解释模型无关解释)应运而生,通过解析复杂模型的个别预测,提供清晰、可解释的结果。LIME由华盛顿大学的研究者于2016年提出,旨在解决AI模型的透明度问题。它具有模型无关性、直观解释和局部保真度等优点,在金融、医疗等领域广泛应用。LIME不仅帮助企业提升决策透明度,还促进了模型优化和监管合规,是实现可解释AI的重要工具。
153 9
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
3月前
url重写重定向所有http网址到https网址
url重写重定向所有http网址到https网址
49 4
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
186 0
探索区块链技术:从原理到应用的全面解析
【10月更文挑战第22天】 本文旨在深入浅出地探讨区块链技术,一种近年来引起广泛关注的分布式账本技术。我们将从区块链的基本概念入手,逐步深入到其工作原理、关键技术特点以及在金融、供应链管理等多个领域的实际应用案例。通过这篇文章,读者不仅能够理解区块链技术的核心价值和潜力,还能获得关于如何评估和选择适合自己需求的区块链解决方案的实用建议。
106 0
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
203 0
DNS重定向
【8月更文挑战第16天】
469 1
【深度学习】深度学习的详细解析:涵盖定义、技术原理及应用场景
深度学习(Deep Learning)是机器学习(Machine Learning)的一个重要分支,它通过使用多层的神经网络来模拟人脑的学习过程,从而实现对数据的分析和理解。以下是关于深度学习的详细解析
332 2
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
134 12
|
5月前
|
【技术前沿】JAVA网络编程黑科技:URL与URLConnection的创新应用,带你飞越极限!
【技术前沿】JAVA网络编程黑科技:URL与URLConnection的创新应用,带你飞越极限!
47 0

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等