一行代码,在Yii中为模块绑定子域名
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 ,中文的我还没有翻译,等翻译之后,会发布到官方网站。
发表评论
| Trackback

