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
yii2的urlManager配置的更多相关文章
- Yii2的urlManager URL美化
Yii1.*与Yii2中配置路由规则rules是几乎是一样的,但还是有细微的差别. 在Yii1.*中开启path路由规则直接使用 'urlFormat' => 'path', 但在Yii2中已经 ...
- Yii2 的快速配置 api 服务 yii2-fast-api
yii2-fast-api yii2-fast-api是一个Yii2框架的扩展,用于配置完善Yii2,以实现api的快速开发. 此扩展默认的场景是APP的后端接口开发,因此偏向于实用主义,并未完全采用 ...
- YII2开启路由配置后,新加的模块无法访问
最近使用YII2,自定义创建了一个自定义模块users,位置为app\modules\users. 'modules' => [ 'users' => [ 'class' => 'a ...
- Yii2 之 UrlManager 实践 (一)
1. enablePrettyUrl yii2默认不支持类似 http://<domain>/site/error 的url格式,需要在config.php中启用 enablePrett ...
- Yii2.0 UrlManager
服务器软件的配置与1.0一致即可.. 在组件中进行如下配置: 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' = ...
- 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 ...
- yii2发送邮件(配置QQ版本)
1:首先在配置文件main-local.php components=>[]里面配置 'mailer' => [ 'class' => 'yii\swift ...
- Yii2 mongoDb的配置及使用
yii2 的配置都是在启动时加载的,所以mongo的配置也同样在component里面配置. 具体实现(无用户和密码): [ 'mongo1' => [ 'class' => '\yii\ ...
- yii2 modules模块配置指南
在Yii2 中模块是可以无限级嵌套的,也就是说,模块可以包含另一个包含模块的模块,我们称前者为父模块,后者为子模块, 子模块必须在父模块的yiibaseModule::modules属性中申明,例如: ...
随机推荐
- 管理系统UI: System Bar 详解
Google原文: http://developer.android.com/training/system-ui/index.html 管理系统UI之一:淡化System Bar(Dimming t ...
- 使用Chrome或Fiddler抓取WebSocket包
首先,HTTP是建立在TCP协议基础上的,而WebSocket通常也是建立在TCP上,所以说为什么有些网页游戏抓不到包而有些又可以,这仅是因为你使用的抓包工具是针对了HTTP的通信协议. 我先从抽象的 ...
- Bzoj1189 [HNOI2007]紧急疏散evacuate
1189: [HNOI2007]紧急疏散evacuate Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2293 Solved: 715 Descr ...
- lua的corroutine学习
lua的corroutine学习 function receive (prod) local status, value = coroutine.resume(prod) return value e ...
- HDU 4857 逃生(反向拓扑排序)
传送门 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前.同时,社 ...
- 【Alpha阶段】第⑨次Scrum例会
会议信息 因编译作业发布,暂时没有进展 时间:2016.11.03 21:30 时长:5min 地点:大运村1号公寓 类型:日常Scrum会议 NXT:2016.11.05 21:30 个人任务报告 ...
- Raspberry Pi 3 Basic Command and Information
default username : pi default password : raspberry enter system setting interface : sudo raspi-confi ...
- CSS3-box盒布局
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- uC/OS-II任务(OS_task)块
/*************************************************************************************************** ...
- 设计模式-观察者模式(List列表维护观察者)
namespace ConsoleApplication1{ interface IObserver { void ReceiveMsg(string msg); } class Observer : ...