天天看點

秋色園QBlog技術原了解析:UrlRewrite之URL重定向體系(四)

文章回顧:

附說:

目前正在尋找開源團隊成員,有意向創業加入者,

OK,回到正題:

先上一張圖檔:

秋色園QBlog技術原了解析:UrlRewrite之URL重定向體系(四)

從圖中将可看到有很多的ashx處理程式,這些處理程式,是如何被安排工作的呢?

請看:秋色園的内部URL定位系統:

系統定位:

使用者定位:

Rss定位,包括主站和使用者:

<a href="http://www.cyqdata.com/rss"></a>

還有一個Home.ashx

原來在秋色園的V2.5之前,隻存在一個主站,後來增加了“健康頻道”之後,秋色園更改原來政策,将主站改造為一個頻道,技術頻道,于是出現三個頻道:

技術頻道、健康頻道、使用者頻道。

根據配置檔案,你可以将主站定位到任意頻道中,簡單說秋色園本無主站,隻是你把www指向某個頻道,于是某個頻道就成了主站,如此的處理方式,有利于擴充N個頻道内容,而主站,隻要任意指定即可。

二:重定向的内部邏輯

當UrlRewrite接到一個陌生的請求時,需要做以下的事情:

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

簡單的分析為:如果是圖檔/js/css等,你需要直接return,因為不需要重定向。

而有一些簡單需要重定向:比如直接.mdb,.ashx類型的檔案時,你可以重定向到error.ashx去處理,告知使用者不允許直接通路。

2:分析URL,是主站請求,還是使用者請求

因為主站請求和使用者請求是有差別的,比如:

3:分離關鍵參數

總不能使用者怎麼請求來,就原封不動的轉給相應的ashx處理程式吧,這樣會加大ashx的工作量,是以,在這一步就分好,是非常有必要的。

秋色園一個分了3個參數:u={0}&amp;type={1}&amp; para={2}

3.1:使用者名:從URL中找出分類關鍵字使用者名

示例:如URL為以下形式的請求:

qblog.cyqdata.com

<a href="http://www.cyqdata.com/qblog">www.cyqdata.com/qblog</a>

需要從中分離出u=qblog,如果取出的是系統關鍵字,則為空

3.2:類型:從URL中找出分類關鍵字如:article、phpto、health、tech等

<a href="http://www.cyqdata.com/qblog/article">www.cyqdata.com/qblog/article</a>

<a href="http://www.cyqdata.com/qblog/photo">www.cyqdata.com/qblog/photo</a>

需要從中分離出type=article或type=photo,如果沒有,預設就是index

3.3:原始請求位址:

在某些業務進行中,你需要記錄原始請求的URL,這時候就可以輕松的拿到了

4:其它細節處理

4.1:虛拟目錄

這是什麼情況?

簡單的說就是:購了一個虛拟主機,主機支援一個站點,同時支援N個子目錄。所謂的子目錄,大體就是在主機目錄下建立多一個檔案夾來放站點。

出現的情況?

在擷取請求實體路徑時,會多出一層的虛拟目錄,導緻很多問題。

解決方法?

總結:

下節将為大夥介紹重定向定位後的第一接手人:Module.dll,

如何為人之父(基類),建立生命周期等過程。

     本文轉自cyq1162 51CTO部落格,原文連結:<b>http://blog.51cto.com/cyq1162/499457</b>,如需轉載請自行聯系原作者

繼續閱讀