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

How to get baseUrl in Yii2 advanced app after Url rewrite

我用过Yii2高级应用。我在前端和后端重写 url。 重写前端 url 后是

localhost:83/Working-copy/mySite/

对于后端

 localhost:83/Working-copy/mySite/admin

现在我想获得基础 url 喜欢

/Working-copy/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/.

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

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