参考资料:http://www.yiichina.com/doc/guide/2.0/runtime-routing
Url美化
以首页链接为例:http://www.demo.com/index.php?r=site%2Findex,如何对上面链接做美化呢?看下面的教程
1.开启apache-rewrite,打开/frontend/config/main.php中的components下面添加以下代码
- 'urlManager' => [
- 'enablePrettyUrl' => true,
- 'showScriptName' => false,
- 'rules'=>[
- ],
- ],
2.在/frontend/web下面添加.htaccess文件
- RewriteEngine on
- ##
- # @from Yii中文网 www.yii-china.com
- # @mail xianan_huang@163.com
- # @author 上班偷偷打酱油
- ##
- # 如果是一个目录或者文件,就访问目录或文件
- RewriteCond %{REQUEST_FILENAME} !-d
- # 如果文件存在,就直接访问文件,不进行下面的RewriteRule
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule . index.php
3.如需在尾部跟上.html(伪静态)只需要在urlManager中添加
- 'urlManager' => [
- 'enablePrettyUrl' => true,
- 'showScriptName' => false,
- 'suffix'=>'.html',
- 'rules' => [
- ],
- ],
如此,首页链接就变成:
http://www.demo.com/site/index.html
/site/about.html
/site/contact.html
/site/login.html
Url规则:
urlmanager配置为应用程序组件在[[\yii\base\Application]]。你可以通过Yii访问实例:Yii::$app->urlManager
您可以通过添加一个数组到您的应用程序配置下的“components”中,示例如下:
- 'urlManager' => [
- 'enablePrettyUrl' => true,
- 'rules' => [
- // your rules go here
- ],
- // ...
- ]
rules规则举例:
- [
- 'dashboard' => 'site/index',
- 'POST <controller:\w+>s' => '<controller>/create',
- '<controller:\w+>s' => '<controller>/index',
- 'PUT <controller:\w+>/<id:\d+>' => '<controller>/update',
- 'DELETE <controller:\w+>/<id:\d+>' => '<controller>/delete',
- '<controller:\w+>/<id:\d+>' => '<controller>/view',
- ];
- 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',
- // 需要将 Web Server 配置成可以接收 *.digpage.com 域名的请求
- 'http://<user:\w+>.digpage.com/<lang:\w+>/profile' => 'user/profile',]
1、案例:
微信的授权跳转地址,不可有&之后的参数,所以要对url美化一下
- 'training/wxcnooc/widget-<wid:\d+>-<pid:\d+>'=>'training/wxcnooc/widget',
- 'meet/wxcnooc/widget-<wid:\d+>-<pid:\d+>'=>'meet/wxcnooc/widget',
原链接地址:
- http://xx.xx.xx.cn/training/wxcnooc/widget?wid=161&pid=190
url美化后地址为:
- http://xx.xx.xx.cn/training/wxcnooc/widget-161-190
demo:
原本的路由是:/article/tag?tagname=阳台
想要达到的效果是: /tag/阳台
demo:
原本的路由是:/article/product
想要的效果:/product/ 【注意点:最后有一个反斜杠,正常路由美化的时候是没有最后的反斜杠】
PS:在suffix中加一个反斜杠
demo:
原本的路由是:/article/package
想要的效果是:/package.html 【注意点:有后缀名,伪静态】
demo: