.htaccess Url重写后如何在Yii2高级应用程序中获取baseUrl

.htaccess Url重写后如何在Yii2高级应用程序中获取baseUrl,.htaccess,yii2-advanced-app,base-url,.htaccess,Yii2 Advanced App,Base Url,我使用了Yii2高级应用程序。我在前端和后端重写url。 重写后的前端url为 localhost:83/Working-copy/mySite/ 和后端 localhost:83/Working-copy/mySite/admin 现在我想得到基本的url,比如 /工作副本/mySite/ 但我没有完全理解 我试过以下方法 echo Yii::getAlias('@web') // ans= /Working-copy/mySite/admin echo Yii::getAlias('@

我使用了Yii2高级应用程序。我在前端和后端重写url。 重写后的前端url为

localhost:83/Working-copy/mySite/
和后端

 localhost:83/Working-copy/mySite/admin
现在我想得到基本的url,比如

/工作副本/mySite/

但我没有完全理解

我试过以下方法

echo Yii::getAlias('@web') // ans= /Working-copy/mySite/admin
echo Yii::getAlias('@backend') // ans= /var/www/Working-copy/mySite/backend 
echo Yii::getAlias('@webroot') // ans= /var/www/Working-copy/mySite/backend
echo Yii::$app->request->BaseUrl // ans= /Working-copy/mySite/admin
echo Yii::$app->getBasePath(false) // ans= /var/www/Working-copy/mySite/backend
echo Yii::$app->homeUrl // ans = /Working-copy/mySite/admin/
在一些url中我得到
/var/www/
,在一些url中得到
/admin/

我只想要我的项目名称。 有什么解决办法吗

  • 将组件创建到公用文件夹中
  • addrequest.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;
        }
    
        public function getActualBaseUrl(){
            return str_replace($this->web, "", parent::getBaseUrl());
        }
    
        public function resolvePathInfo(){
            if($this->getUrl() === $this->adminUrl){
                return "";
            }else{
                return parent::resolvePathInfo();
            }
        }
    }
    
  • 使用Yii::$app->request->getActualBaseUrl()

  • 将组件创建到公用文件夹中
  • addrequest.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;
        }
    
        public function getActualBaseUrl(){
            return str_replace($this->web, "", parent::getBaseUrl());
        }
    
        public function resolvePathInfo(){
            if($this->getUrl() === $this->adminUrl){
                return "";
            }else{
                return parent::resolvePathInfo();
            }
        }
    }
    
  • 使用Yii::$app->request->getActualBaseUrl()