yii2的urlManager配置

网址伪静态是一个非常常用的网站需求,Yii2可以非常简单地进行配置。

首先,在配置文件config/main.php的'components' 段中,加入如下设置:
'urlManager'=>array(
             'enablePrettyUrl' => true, //对url进行美化
             'showScriptName' => false,//隐藏index.php
             'suffix' => '.html',//后缀
             'enableStrictParsing'=>FALSE,//不要求网址严格匹配,则不需要输入rules
             'rules' => []//网址匹配规则
),
然后,启用服务器的rewrite规则,比如apache服务器里,在网站根目录web文件夹里新建.htaccess文件,输入如下内容:
RewriteEngine on

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
注意这个文件仅对apache有效,并且apache必须启用rewrite模块。

这样,网址就自动优化了。

urlManager有以下可用参数:

[table id=1 /]

YII2的rules配置相对其它框架已经算简单了,但真要熟练应用也需要多多练手,或是啃一下yii/web/UrlRule类库的。一般来说,我们用到以下这几条就足够了:
'rules' => [
    // 为路由指定一个别名简化网址
    'reg' => 'user/register',

// 加id参数,这里用到了一点点正则,\d+在正则中表示至少一位的纯数字
    'article/<id:\d+>' => 'article/view',
    //标准的控制器/方法显示
    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    //加id参数
    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

// controller和action进行严格限制
    '<controller:(post|comment)>/<id:\d+>/<action:(create|update|delete)>'
        => '<controller>/<action>',

// 包含了 HTTP 方法限定,用于restful风格的Web Server
    'DELETE <controller:\w+>/<id:\d+>' => '<controller>/delete',

// 配置Web Server ,接收 *.cn09.com 域名的请求
    'http://<user:\w+>.cn09.com/<lang:\w+>/profile' => 'user/profile',
]
根据以上规则,如果有什么特殊需求,应该多少也能猜到。如果需要完全理解路由规则,可以阅读一下yii/web/UrlRule源码,如果有特殊需求,也可以根据源码新建一个自己规则类来进行处理。
原文链接:http://www.cn09.com/archives/415

上一篇:Josephus环类问题,java实现


下一篇:关于T-SQL重编译那点事,内联函数和表值函数在编译生成执行计划的区别