CUrlRule

在Yii中重写URL(高级版)

拟墨画扇 提交于 2019-12-05 05:34:45
前两天做了网站SEO方面的URL优化工作。 具体要求是:商品分类的URL中需要有这个分类的汉语拼音出现, 如:http://www.abc.com/category-shafa.html ( 之前的URL大致是这样的: http://www.abc.com/category/index/f/24/c/279/p.html,其中f参数对应分类id ) 分析:在分类表里面添加拼音字段;在url生成之前,将f参数转换成所需的拼音。在解析URL之前,将拼音转换成对应的分类id。 从哪里开始入手呢,首先想到的是在main.php中的urlManage配置中德rules数组中添加规则, 难题来了,id转换成拼音是需要查数据库的,在main.php中查数据库只能用原生的sql来查询,不但影响系统的扩展,还会破坏配置文件的整洁性。 于是乎,查了一下Yii的API,发现Yii的扩展性做的相当出色,rules参数里面还可以传入数组,而CUrlManager只是递归处理了一下这个rules就解决了数组参数。很佩服yii的设计者,复杂问题却用如此简单的几步就解决了(代码就不贴出来了)。 下面是API中的参考例子。 //Starting from version 1.1.8, one can write custom URL rule classes and use them for one or