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/
.
我只想要我的项目名称。
请问有什么解决办法吗?
- 将组件创建到公共文件夹中。
添加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();
}
}
}
使用 Yii::$app->request->getActualBaseUrl()。
我用过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/
.
我只想要我的项目名称。 请问有什么解决办法吗?
- 将组件创建到公共文件夹中。
添加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(); } } }
使用 Yii::$app->request->getActualBaseUrl()。