重写顺序
正常重写顺序
http->nginx
那么怎么使用yii重写规则生效呢?
那就得告诉nginx,让nginx把重写权限交给yii,下面是nginx的配置
location / {
try_files $uri $uri/ /index.php?$args; //若是匹配不到站点则交给入口文件处理
}
这样重写则变成这样了
http请求来了之后去找nginx,nginx无法找到相应的页面就会请求yii入口文件,然后yii拿到权限就开始使用配置规则进行匹配
加载urlManager组件
'urlManager' => [
'enablePrettyUrl' => true, //对url进行美化
'showScriptName' => false,//隐藏index.php
'suffix' => '.html',//后缀
'enableStrictParsing'=>FALSE,//不要求网址严格匹配,则不需要输入rules
'rules' => [
],
]
rule规则
'rules' => [
// 为路由指定了一个别名,以 post 的复数形式来表示 post/index 路由
'posts' => 'post/index',
// id 是命名参数,post/100 形式的URL,其实是 post/view&id=100
'post/<id:\d+>' => 'post/view',
// controller action 和 id 以命名参数形式出现
'<controller:(post|comment)>/<id:\d+>/<action:(create|update|delete)>'
=> '<controller>/<action>',
//这里只有当HTTP请求为DELETE的时候才会使用规则
'DELETE <controller:\w+>/<id:\d+>' => '<controller>/delete',
]
总结
使用框架的根本目的之一是为了提高开发效率,yii的urlManager无疑也是提升效率的神器,但是性能方面与nginx还是有劣势的,实际开发中,根据项目需求做出最合适的选择,也算是程序员的必须课之一吧