URL重写

URL形式

xpus站点中,用于访问内容的URL形如:

http://[domain].[host]/[path]/[subpath]/[year]/[month]/[day]/[filetitle].x


用于访问区域的URL形如:

http://[domain].[host]/[path]/[subpath]/[year]/[month]/[day]/.x


(以上均是经过正规化的形式,实际使用中,对于区域,无须输入.x)

URL的正规化
Xpus实用一个实现了IHttpModule接口的类对URL进行正规化。由于使用了Forms验证,所以在AuthorizeRequest事件中对URL进行正规化。
正规化的原则是,如果用户输入的url访问的是一个有扩展名的“文件”(即最后一个斜线'/'后的部分包含'.'字符),则不进行正规化(因为用户访问的有可能是一个aspx或html等页面,当然也包括xpus的.x文件)。
如果用户访问的是一个路径,则在最后补全一个'/',并添加'.x'。

URL处理自动机

xpus使用有穷状态自动机(DFA)对URL进行处理。URL处理器自动机如下图所示:

Xpus Url Parser DFA Diagram
Xpus Url Parser DFA Diagram in Word Document

状态转换表:
Input/Current State No. 0 1 2 3 4 5
Path 0 1 - - - - -
Subpath 1 - 2 - - - -
Year 2 3 3 3 - - -
Month 3 - - - 4 - -
Day 4 - - - - 5 -
Title 5 - - - - - 17
.x 6 11 12 13 14 15 16

Last edited Aug 14, 2007 at 1:40 PM by AndersLiu, version 15

Comments

Ballack85 Oct 24, 2007 at 2:56 AM 
............