结合公司以往的项目,实际上我们在什么地方应该使用rewrite,都是需要预先规划的,因此没必要在程序内部去控制rewrite功能,因此只保留了要在模板中使用 <{rewrite}>没rewrite前的网址<{/rewrite}>标签进行需要rewrite的url替换。
使用 rewrite 标签,需要自行在 data/rewrite.ini 进行具体的配置,如
-
-
-
-
-
-
-
-
-
- \?ct=([\w]*)&ac=([\w]*) /ct/$1/ac/$2/
- \?ct=([\w]*)&ac=([\w]*) /ct/$1/ac/$2/
- \?ac=([\w]*) /ac/$1/
- \?ct=([\w]*) /ct/$1/
[1] 这里的语法完全是按照preg的正则语法的,有一点不同的是,实际替换时会对 source 网址用 '' 或 "" 进行限制,因此模板里 a href=xx.php?ct=aaa 这类不规范网址是不会被替换的,超链接必须用 "" 或 '' 括起来,这样的好处是对于 javascript('?ct=xx&ac=yy&op=tttt&nn=aaa') 这种不完全符合规则的网址不会被替换。
[2] \w 在正则里是表示 字母、数字、下划线的组合,在这框架里,还包括 <>、{}、“.” 、$,这样做的目的是识别<{$v.name}>这类的变量,因此,超链接里的模板语法不能出现空格,也不支持if、或其它块类的语法,否则替换不了。
如:a href='?ac=list&id=<{$v.r.cid}>' 是可以识别的,但 a href='?ac=list&id=<{ if $v.r.cid==1 }1{else}$v.r.cid{/if}>',这种复杂的语法是无法识别的,主要原因是处理html是在解析前之理,而不是输出前(输出前处理无法导致性能下降),如果一定要在网址里用复杂语法的,可以参考“三、关于替换模式”的说明。
rewrite 仅是对相应规则的网址进行替换,实际的rewrite,还需要自行在服务器里进行定义一遍。
|