diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 0a95132681a..45d8cd37465 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,6 +4,7 @@ Yii Framework 2 Change Log 2.0.50 under development ------------------------ +- Bug #17191: Fixed `UrlManager::createUrl($params)` method now relies on `BaseUrl::isRelative($url)` method (ggh2e3) - Bug #17191: Fixed `BaseUrl::isRelative($url)` method in `yii\helpers\BaseUrl` (ggh2e3) - Bug #18469: Fixed `Link::serialize(array $links)` method in `yii\web\Link` (ggh2e3) - Bug #20040: Fix type `boolean` in `MSSQL` (terabytesoftw) diff --git a/framework/web/UrlManager.php b/framework/web/UrlManager.php index 292c4bc3e70..bf333b7bbd0 100644 --- a/framework/web/UrlManager.php +++ b/framework/web/UrlManager.php @@ -446,22 +446,16 @@ public function createUrl($params) } if ($url !== false) { - if (strpos($url, '://') !== false) { - if ($baseUrl !== '' && ($pos = strpos($url, '/', 8)) !== false) { - return substr($url, 0, $pos) . $baseUrl . substr($url, $pos) . $anchor; - } - - return $url . $baseUrl . $anchor; - } elseif (strncmp($url, '//', 2) === 0) { - if ($baseUrl !== '' && ($pos = strpos($url, '/', 2)) !== false) { - return substr($url, 0, $pos) . $baseUrl . substr($url, $pos) . $anchor; - } + if (Url::isRelative($url)) { + $url = ltrim($url, '/'); + return "$baseUrl/{$url}{$anchor}"; + } - return $url . $baseUrl . $anchor; + if ($baseUrl !== '' && ($pos = strpos($url, '/', 8)) !== false) { + return substr($url, 0, $pos) . $baseUrl . substr($url, $pos) . $anchor; } - $url = ltrim($url, '/'); - return "$baseUrl/{$url}{$anchor}"; + return $url . $baseUrl . $anchor; } if ($this->suffix !== null) {