使用yii2高级模板时,访问前端的默认url是localhost/yii-advanced/frontend/web,访问后端的默认url是localhost/yii-advanced/backend/web。通过下面两个步骤,可以把前端的url修改成localhost/yii-advanced/,后端的url修改成localhost/yii-advanced/admin。
一、项目根目录下面添加.htaccess文件
Options -Indexes
Options +FollowSymlinks
RewriteEngine On
# deal with admin first
RewriteCond %{REQUEST_URI} ^/yii-advanced/(admin)
RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L]
#RewriteRule ^admin/(.*ico)$ backend/web/$1 [L]
RewriteCond %{REQUEST_URI} !^/yii-advanced/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} ^/yii-advanced/(admin)
RewriteRule ^.*$ backend/web/index.php [L]
RewriteCond %{REQUEST_URI} ^/yii-advanced/(assets|css)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]
RewriteRule ^/(.*ico)$ frontend/web/$1 [L]
RewriteCond %{REQUEST_URI} !^/yii-advanced/(frontend|backend)/web/(assets|css)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php
二、common目录下新建components\Request.php
<?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();
}
}
}