Yii2高级应用模板将入口文件移到根目录

刚刚安装好的yii2高级模板应用程序,无论是前台还是后台,链接里都多了个/web/ ,我们希望访问的目录应该是这样:前台为http://example.com/,后台为http://example.com/admin.php。所以现在就来进行更改。

另外要明确的是,更改应该仅限于模块本身,而不应该去修改Yii2核心框架。

我们先来修改前台(这里为了避免bom头影响,建议在IDE里进行修改):

1、将入口文件\frontend\web\index.php复制到根目录下,并修改内容:

<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/frontend/config/bootstrap.php');

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/common/config/main.php'),
    require(__DIR__ . '/common/config/main-local.php'),
    require(__DIR__ . '/frontend/config/main.php'),
    require(__DIR__ . '/frontend/config/main-local.php')
);

(new yii\web\Application($config))->run();

2、再修改\frontend\config\里的main.php文件,在component里加入:

该配置项是为那些需要发布的资源(web无法直接访问)指定复制到的目录。

'components' => [
    'assetManager' => [
        'basePath' => '@webroot/frontend/web/assets',
        'baseUrl' => '@web/frontend/web/assets',
    ],
],

3、最后修改\frontend\assets\里的AppAsset.php文件,有三种修改方式:

// 1、修改基本路径:
public $basePath = '@webroot/frontend/web';
public $baseUrl = '@web/frontend/web';

// 2、修改css和js路径:
public $css = [
    'frontend/web/css/site.css',
];

// 3、web无法直接访问的资源
//public $basePath = '@webroot/frontend/web';
//public $baseUrl = '@web/frontend/web';
public $sourcePath = '@frontend/web';
public $css = [
    'css/site.css',
];

这样就可以用http://example.com/直接访问首页了。

后台修改方法是将\backend\web\里的index.php文件夹复制(剪切)至根目录并重命名为admin.php,其他修改地方与上述类似,只是将frontend改为backend即可。