Yii2 路由之同时支持 URL 原始和美化的请求 [ 2.0 版本 ]
来源:互联网 发布:网络计划图绘制软件 编辑:程序博客网 时间:2024/06/03 11:15
1,刚开始的时候,我们使用yi i2时候直接采用的最原始的访问的url方法去访问的。
例子:
http://frontend.domain.com/index.php?r=index/site/index
http://frontend.domain.com/index.php?r=index/article/view&id=1
…
2,使用yii2的URL美化,
例子:
http://frontend.domain.com/index/site/index.html
http://frontend.domain.com/index/article/view/id/1.html
…
注意:
启用yi i的URL美化后,URL的原始访问就不能再用了。除非关闭URL美化。
原理
通过查看yii/web/urlManager源码中parseRequest()方法可以发现:
public function parseRequest($request)
{
if ($this->enablePrettyUrl) {
…
}else{
…
}
}
parseRequest() 是一个 URL 解析方法,从访问的 URL 中解析出路由,然后 Yii2 根据路由信息构建并调用出相应的模块、控制器、方法等等
源码中对 $this->enablePrettyUrl 做了判断,如果开启美化,那么就不进行原始的解析。反之亦然。
共存
你构建的原始形态的 URL 无法访问到 Yii2 对应的控制器。因为此时 Yii2 启用了 URL 美化,无法将原始形态的 URL 解析到指定的路由。
好在 Yii2 非常灵活,我们重写 urlManager 的 parseRequest() 实现它。
新建文件 common/components/urlManage.php,其内容如下:
<\?php
namespace common\components;
use yii;
/**
* URL 管理器
* 继承官方 URL 管理器,同时支持 URL 原始和美化的请求
*/
class urlManager extends yii\web\urlManager
{
/**
* 解析请求路由
* 同时支持 URL 原始和美化的请求解析
*
* @param yii\web\Request $request
* @return array|bool
*/
public function parseRequest( $request )
{
$route = trim($request->get($this->routeParam));
$enablePrettyUrl =\ $this->enablePrettyUrl;
if( \$route != '' ) \$this->enablePrettyUrl = false; \$result = parent::parseRequest(\$request); if( \$route != '' ) \$this->enablePrettyUrl = \$enablePrettyUrl; return \$result;}
}
在 应用主体 的配置文件中将该新的 urlManager 类添加;例如编辑 /frontend/config/main.php,添加如下代码:
$configs[‘components’][‘urlManager’] = array(‘class’=>’common\components\urlManager’);
至此,你就可以同时使用以下的 URL 进行访问:
http://frontend.domain.com/index.php?r=index/site/index
http://frontend.domain.com/index.php?r=index/article/view&id=1
…
http://frontend.domain.com/index/site/index.html
http://frontend.domain.com/index/article/view/id/1.html
…
注意:前提需要你开启了 URL 的美化,不然 xxx.html 那几个 URL 将无法访问
- Yii2 路由之同时支持 URL 原始和美化的请求 [ 2.0 版本 ]
- Yii2.0美化路由Url
- [路由] -- Yii2 url地址美化与重写[2.0版本]
- Yii2的URL美化
- YII2设置路由访问,美化url
- [路由] -- Yii2 url地址美化与重写
- Yii2 路由美化
- Yii2 路由美化
- yii2美化路由相关配置
- Yii 2.0 路由管理美化URL
- yii2框架-伪静态的配置/美化URL
- 关于yii2的url美化及相关apache配置问题
- 从头开始学习yii2---2.url的路由配置
- yii2.0域名目录绑定(二级域名)以及url美化 url伪静态 Apache 和 IIS
- webapi同时支持get和post请求
- yii2.0系列三:url美化
- YII2.0-advanced-4—URL美化
- yii2 urlManager url美化及apache下yii2 rewrite设置
- JUnit的各种断言
- 转-为什么说SQL正在击败NoSQL,这对数据的未来意味着什么?
- 欢迎使用CSDN-markdown编辑器
- 卡尔曼滤波 从推导到应用(1)
- 《C++ Concurrency in Action》笔记31 测试及调试多线程应用程序
- Yii2 路由之同时支持 URL 原始和美化的请求 [ 2.0 版本 ]
- laravel5.2中多条件or查询
- java 语言程序设计 第十二章(12.1、12.2、12.3、12.4、12.5、12.6)
- java基础知识2 JDBC
- 用VS2017上传项目到码云gitee.com和基本命令
- Java4Android笔记之Java中的static关键字的作用
- spring aop学习3:通知(Advice注解)
- c# 应用程序的.dll文件更新。
- 171022—素数完全分解的另外循环 & 剪刀石头布!