您当前的位置:首页 > 分类 > 技术资讯 > YII > 正文

YII中利用urlManager将URL改写成restful风格

发布时间:2015-08-24 16:00:25      来源:51推一把
【摘要】YII中利用urlManager将URL改写成restful风格,以及一些项目中url rules实例
1.打开config文件夹下面的mian.php
 
2.修改内容
 
如把地址http://www.test.com/index.php?r=site/page/sid/1修改为http://www.test.com/site/page/sid/1
  
urlManager=>array(  
            showScriptName=>false, // 这一步是将代码里链接的index.php隐藏掉。  
            urlFormat=>path,  
            rules=>array(    
                <controller:w+>/<id:d+>=><controller>/view,                
                <controller:w+>/<action:w+>/<id:d+>=><controller>/<action>,  
                <controller:w+>/<action:w+>=><controller>/<action>,                  
                              
            ),  
        ),  


修改为如果想不显示参数名可直接添加规则 添加规则后地址为http://www.test.com/site/page/1
 
rules=>array(        
                <controller:w+>/<action:w+>/<sId:d+>=><controller>/<action>,      
            ),  


还可以修改成http://www.test.com/site/page/Sid1
  
rules=>array(        
                <controller:w+>/<action:w+>/Sid<sId:d+>=><controller>/<action>,   
            ),  


不显示controller和action http://www.test.com/Sid1
 
rules=>array(        
                Sid<sId:d+>=>site/page,     
            ),  
 
注意定义规则的顺序


3.其它样例

3.1 带分站
rules => array(
                <site:bj>/<action:test1|test2|test3|...|testn>  =>  site/<action>, //site-controller,action传值 eg:/bj/test1
                <site:bj>/<controller:test1> =>  <controller>/list,    //已固定的参数,在url里可以忽略掉不传
                <site:bj>/<controller:test1>/<id:d+>.html =>  <controller>/index,
                <controller:404>  =>  site/error,
                <site:bj> =>  site/index,
                <site:bj>/<controller:hd>/<action:tt>/<code:d+>  =>  <controller>/<action>,
                <site:bj>/<controller:hd>/<action:tt>/user/<code:d+>/  =>  <controller>/<action>,

                <site:bj>/<controller> =>  <controller>/index,
                <site:bj>/<controller>/<action> =>  <controller>/<action>,
            ),


3.2 modules

rules => array(

//d
                <d>/<controller:user> => /d/user/index,
                <d>/<controller:user>/<uid:d+> => /d/user,

                //wap
                <module:w>/<controller:index>/<action:list>/<cate:w+> => w/index/list,
                <module:w>/<controller:index>/<action:test>/<cate:w+> => w/index/test,
                <module:w>/<controller:index>/<action:test>/<cate:w+>/p<page:d+> => w/index/test,
                <module:w>/<controller:index>/<action:test2>/<case:d+>/<param:w+> => w/index/test2,
                
                //controller
                <controller:sjs>/<city:d+> => sjs/index,
                <controller:sjs>/<city:d+>p<page:d+> => sjs/index,

                //sitemap
                case_<o:[d]+>_<l:[d]+>.html => sitemap/case,
                test.html => sitemap/test,
                sitemap_img_360_<date:[dw]+>_<page:[d]+>.xml => sitemap/img360,
                sitemap_img_360_<date:[dw]+>.xml => sitemap/img360,
                
            //项目
                <controller:w+>/<action:w+>/<id:d+> => <controller>/<action>,
                <controller:w+>/p<page:d+> => <controller>,
                <controller:w+>/<action:w+>/p<page:d+> =>  <controller>/<action>,
                <module:w+>/<controller:w+>/<action:w+>/p<page:d+> => <module>/<controller>/<action>,
                <module:w+>/<controller:w+>/<action:w+>/<test:d+> => <module>/<controller>/<action>,
                <module:w+>/<controller:w+>/<action:w+>/<test:d+>/<param:w+> => <module>/<controller>/<action>,
                <module:w+>/<controller:w+>/<action:w+>/<test:d+>/<param:w+>/<index:d+> => <module>/<controller>/<action>,

                //其他
                <controller:home> => site/index,
                <controller:index> => site/index,
                <controller:reg> => login/register,

),