在根文件夹中创建。htaccess文件,即先进/ .htaccess写下面的代码。
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^.*$ backend/web/index.php [L]
RewriteCond %{REQUEST_URI} ^/(assets|css)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php
</IfModule>
注:如果你想在本地服务器进行替换^ / ^ / project_name /你在哪里看到的箭头标志。安装完成后删除这些箭头符号< ------。
现在创建一个components/Request.php普通目录文件写在这个文件中的代码。
namespace common\components;
class Request extends \yii\web\Request {
public $web;
public $adminUrl;
public function getBaseUrl(){
return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl;
}
/* 如果你没有这个功能,管理网站将404,如果你离开了尾随的削减。例如:不工作:site.com/admin会工作:site.com/admin/使用此功能,将工作。 */
public function resolvePathInfo(){
if($this->getUrl() === $this->adminUrl){
return "";
}else{
return parent::resolvePathInfo();
}
}
}
安装组件。写在backend/config/main.php和backend/config/main.php中。
//frontend, under components array
'request'=>[
'class' => 'common\components\Request',
'web'=> '/frontend/web'
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
// backend, under components array
'request'=>[
'class' => 'common\components\Request',
'web'=> '/backend/web',
'adminUrl' => '/admin'
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
创建Web目录.htaccess文件。
<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ /index.php?/$1 [L]</IfModule>
注意:请重启你的Apache现在开始重新访问以下吧
www.xxx.com/admin 访问后台
www.xxx.com 访问前台
以上是高级版的Advanced配置方法,基础版的不需要这样配置。
Advanced和 basic 最大的区别就是分离了前后台 分别是 backend目录和frontend目录
这两个目录实际相对于 basic 来说,其实就是两个Yii应用 ,他们公用的比如Model部分都存放在Common目录 这种高级应用适用于比较复杂大型的项目用于彻底分离开前后台业务逻辑 。
因此访问前后台就相当于访问两个不同的应用,因此在配置Vhost webroot 目录的时候,假设域名为 www.elshequ.com 那么 www.elshequ.com指向前台目录 /frontend/web/配置二级域名root.xxx.com 指向/backend/web/