【问题标题】:How to get baseUrl in Yii2 advanced app after Url rewriteUrl重写后如何在Yii2高级应用程序中获取baseUrl
【发布时间】:2015-11-28 20:48:57
【问题描述】:

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

localhost:83/Working-copy/mySite/

对于后端

 localhost:83/Working-copy/mySite/admin

现在我想获得类似的基本网址

/工作副本/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/

在某些网址中我得到/var/www/,在某些网址中得到/admin/

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

【问题讨论】:

    标签: .htaccess yii2-advanced-app base-url


    【解决方案1】:
    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()。

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 2021-07-28
      • 2016-06-21
      • 2013-06-19
      • 1970-01-01
      相关资源
      最近更新 更多