模板引擎

URL重写,实质上是将网页真实URL隐藏起来,使用户通过相应的虚拟URL访问网页资源,以便克服真实URL的许多不足。IIS Rewrite的工作原理请看下图:

DTcms的HttpModule类位于DTcms.Web.UI项目下,它是整个站点的URL请求的核心,每次URL发起的请求都会经过它负责重写分配。我们可以从站点下的Web.config文件中看到一个如下的节点:

<httpModules>
    <add type="DTcms.Web.UI.HttpModule, DTcms.Web.UI" name="HttpModule" />
</httpModules>

无论你想获得网站的一个页面或者是一张图片,都会经过HttpModule这个类处理,它就像是作战的总指挥,它负责分配每个HTTP请求的去向。

DTcms的URL重写表达式

DTcms的URL重写表达式,我们暂且称它为URL字典。我们在后台所做的一切修改,都会保存在一个XML文件中,它位于DTcms.Web项目的xmlconfig文件夹下的urls.config文件。当然,为了性能和效率有所提升,系统将会读取该文件中的内容进行续存,当文件进行修改时,续存自动更新。

Rewrite属性说明:

属性 说明 示例
name 该条URL重写表达式调用的名称,该属性值不允许重复,一般在前台模板做链接时使用到。 <%linkurl(“news_list”)%>
type 系统会根据页面类型做不同的URL重写处理,也会根据页面类型继承不同的类。

可选值有:

  1. index:首页
  2. list:列表页
  3. detail:详细页
  4. category:栏目页
  5. plugin:插件页
  6. other:其它页
page 后台生成模板时,读取模板文件经过解析后,保存成aspx动态页面的文件名。 news_list.aspx
inherit 后台生成模板时,在保存成aspx动态页面时,头部要继承的类名,全局限定名。 DTcms.Web.UI.Page.article_list
templet 后台生成模板时,该aspx页面对应的模板文件名,系统自动寻找该模板文件读取内容。 news_list.html
channel 该条URL归属的频道名称,系统会自动生成,无需手动填写,如果不属于频道则可以忽略该属性。 news

item子节点属性说明:

属性 说明 示例
path

URL重写表达式

{0}表示第一个参数的值
{n}表示第N个参数的值
news/{0}/{1}.aspx
<!—表示有两个参数-->
pattern URL重写正则表达式
和path是对应的,只不过上面用的是{n}表示,而这里用(正则表达式)表示
news/(\d+)/(\w+).aspx
<!—对应两个正则表达式分组-->
querystring 该URL所带的参数
参数名称=$1,$1表示第一个参数的值,如有多个参数用^连接起来。
category_id=$1^page=$2
<!—第一个参数是类别ID,第二个参数是分页页码-->

微信扫一扫