网址伪静态是一个非常常用的网站需求,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

yii2的urlManager配置的更多相关文章

  1. Yii2的urlManager URL美化

    Yii1.*与Yii2中配置路由规则rules是几乎是一样的,但还是有细微的差别. 在Yii1.*中开启path路由规则直接使用 'urlFormat' => 'path', 但在Yii2中已经 ...

  2. Yii2 的快速配置 api 服务 yii2-fast-api

    yii2-fast-api yii2-fast-api是一个Yii2框架的扩展,用于配置完善Yii2,以实现api的快速开发. 此扩展默认的场景是APP的后端接口开发,因此偏向于实用主义,并未完全采用 ...

  3. YII2开启路由配置后,新加的模块无法访问

    最近使用YII2,自定义创建了一个自定义模块users,位置为app\modules\users. 'modules' => [ 'users' => [ 'class' => 'a ...

  4. Yii2 之 UrlManager 实践 (一)

    1.  enablePrettyUrl yii2默认不支持类似 http://<domain>/site/error 的url格式,需要在config.php中启用 enablePrett ...

  5. Yii2.0 UrlManager

    服务器软件的配置与1.0一致即可.. 在组件中进行如下配置: 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' = ...

  6. Centos6.5中 一键安装LNMP 安装Yii2.0 手工配置

    1.一键安装LNMP cd /usr wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz tar zxf lnmp1.-full.tar.gz ...

  7. yii2发送邮件(配置QQ版本)

    1:首先在配置文件main-local.php components=>[]里面配置 'mailer' => [              'class' => 'yii\swift ...

  8. Yii2 mongoDb的配置及使用

    yii2 的配置都是在启动时加载的,所以mongo的配置也同样在component里面配置. 具体实现(无用户和密码): [ 'mongo1' => [ 'class' => '\yii\ ...

  9. yii2 modules模块配置指南

    在Yii2 中模块是可以无限级嵌套的,也就是说,模块可以包含另一个包含模块的模块,我们称前者为父模块,后者为子模块, 子模块必须在父模块的yiibaseModule::modules属性中申明,例如: ...

随机推荐

  1. Spring常用注解,自动扫描装配Bean

    1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...

  2. ml的线性回归应用(python语言)

    线性回归的模型是:y=theta0*x+theta1   其中theta0,theta1是我们希望得到的系数和截距. 下面是代码实例: 1. 用自定义数据来看看格式: # -*- coding:utf ...

  3. 一次更愚蠢的NOIP模拟赛

    都可以从COGS上找到 纵横字谜(krizaljka) 时间限制: 1 Sec  内存限制: 32 MB 题目描述 给出两个单词,找到第一个相同的字母,然后第一个单词横数输出,第二个竖着输出形成十字形 ...

  4. 【BZOJ-3438】小M的作物 最小割 + 最大权闭合图

    3438: 小M的作物 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 825  Solved: 368[Submit][Status][Discuss ...

  5. Namenode主节点停止报错 Error: flush failed for required journal

    主节点间歇性报错其他没有问题 ,SNN的NN没有问题,相关的journalNode也都在,就是主节点的NN会停止. 查看hadoop主节点的NN日志. 2016-11-21 22:36:40,908 ...

  6. 【随笔】mvc使用forms身份验证实现登陆

  7. UVA11426 欧拉函数

    大白书P125 #include <iostream> #include <cstring> using namespace std; #define MMX 4000010 ...

  8. 批处理(.bat)For命令使用

    for命令使用 @echo off REM 打印当前目录里所有子目录的名称 REM for /d %%i in (*) do @echo %%i REM 打印当前目录里所有名字为3个字符的子目录的名称 ...

  9. 事务块TransactionScope使用

    TransactionScope 可以让代码块成为事务性代码块. 当发生异常时,会自动回滚.后期手动提交事务. 简单的例子: using (TransactionScope ts = new Tran ...

  10. SublimeREPL快捷键设置

    SublimeREPL 允许你在 Sublime Text 中运行各种语言(NodeJS , Python,Ruby, Scala 和 Haskell 等等).所以对于程序员来说,这是很重要的一个插件 ...