一行代码,在Yii中为模块绑定子域名

2010年5月26日 | 分类: PHP | 标签: , , , ,

Yii强大的路由功能配置相当灵活,特别是增加了参数主机名路由功能之后更是可以灵活控制域名。感觉每一次提出一个提议,Yii的开发者qiang如果采纳,就会给出一个我没有想到却更加强大的解决方案。这次就是这样。

下面就是可以将所有子域名都转化为模块的路由规则,来自Yii官方论坛的一个帖子

‘http://<_m:\w+>.xxx.com<_q:.*>/*’=>’<_m><_q>’,

规则写在main.php中的组件配置数组里面:

‘urlManager’=>array(

‘urlFormat’=>’path’,
’showScriptName’ => false,
‘rules’=>array(
‘http://<_m:\w+>.xxx.com<_q:.*>/*’=>’<_m><_q>’,
)
),
如果仅仅是一个模块(假设是user)需要绑定子域名,可以这样写规则:
‘http://user.xxx.com<_q:.*>/*’=>’user<_q>’,
如果是若干模块需要绑定子域名,可以这样写:
‘http://<_m:(user|admin|photo)>.xxx.com<_q:.*>/*’=>’<_m><_q>’,

在使用的时候我注意到,如果是www开头的网址也会被转向到www模块,那么你可以使用(A|B|C)这样的规则选择要启用的模块,或者使用正则来滤掉www。

另外在路由规则里面,如果某一条匹配,则不会向下进行匹配。这是需要注意的,但是正是这样,路由才更高效,更灵活。

官方的URL管理说明文档:http://www.yiiframework.com/doc/guide/topics.url ,中文的我还没有翻译,等翻译之后,会发布到官方网站。

目前还没有任何评论.