前言:yii 框架本身不支持url访问兼容模式,只支持普通模式与pathinfo模式其中之一
https://xxx/web/index.php?r=mall/Findex/index 默认模式
https://xxx/web/index.php/mall/index/index pathinfo 模式
但是项目中总会遇到需要兼容的地方
改进:
1.在config/配置文件中添加urlManager
'components' => [
'cache' => isset($local['cache']) ? $local['cache'] : [
'class' => 'yii\caching\FileCache',
],
'urlManager' => [
'enablePrettyUrl' => true,//必须开启pathinfo
'showScriptName' => true,
'rules' => [
],
],
2.创建目录文件common\components\urlManager.php
<?php
namespace app\common\components;
use yii;
/**
* 继承原始URL类,同时支持 URL 原始和美化的请求
*/
class urlManager extends yii\web\UrlManager
{
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;
}
}
3.依旧在config/配置文件中添加
$config['components']['urlManager']['class'] = 'app\common\components\urlManager';
至此,两种模式都可兼容