XML/HTML代码
'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)需要绑定子域名,可以这样写规则:
XML/HTML代码
'http://user.xxx.com<_q:.*>/*'=>'user<_q>',
如果是若干模块需要绑定子域名,可以这样写:
XML/HTML代码
'http://<_m:(user|admin|photo)>.xxx.com<_q:.*>/*'=>'<_m><_q>',
在使用的时候我注意到,如果是www开头的网址也会被转向到www模块,那么你可以使用(A|B|C)这样的规则选择要启用的模块,或者使用正则来滤掉www。
另外在路由规则里面,如果某一条匹配,则不会向下进行匹配。这是需要注意的,但是正是这样,路由才更高效,更灵活
实例:
YII模块实现绑定二级域名主要有如下步骤:
首先在配置文件设置:
'urlManager' => array( 'urlFormat' => 'path', 'showScriptName' => false, //注意false不要用引号括上 'urlSuffix' => '.html', 'rules' => array( 'http://test.shouce.ren'=>array('/blog', 'urlSuffix'=>”, 'caseSensitive'=>false), ),
blog 为一个模块 ,如果在blog模块下还存在第二个控制器(这里以comment为例),则需要多写一个规则,如下
'urlManager' => array( 'urlFormat' => 'path', 'showScriptName' => false, //注意false不要用引号括上 'urlSuffix' => '.html', 'rules' => array( 'http://test.shouce.ren'=>array('/blog', 'urlSuffix'=>”, 'caseSensitive'=>false), 'http://test.shouce.ren/comment-<id:\w+>'=>array('/blog/comment/', 'urlSuffix'=>'.html', 'caseSensitive'=>false), ),
如要访问blog下的某一条评论的URL会是:http://test.shouce.ren/comment-1.html
本在地服务器的情况:
一、在YII配置中设置了还不够的,还需要在DNS服务器中把test.shouce.ren二级域名解析到程序服务器,可以在hosts中的最后加入
127.0.0.1 www.shouce.ren test.shouce.ren
二、还需要在apache服务器的http.conf中添加:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin kane@shouce.ren DocumentRoot E:/wamp/www/k1029 ServerName test.shouce.ren ErrorLog logs/test.shouce.ren-error_log CustomLog logs/test.shouce.ren-access_log common </VirtualHost>
如果需要绑定多个二级域名,则只要重复添加即可.