diff --git a/lib/private/URLGenerator.php b/lib/private/URLGenerator.php index f4a83138e4c..167690f3a6e 100644 --- a/lib/private/URLGenerator.php +++ b/lib/private/URLGenerator.php @@ -237,13 +237,13 @@ class URLGenerator implements IURLGenerator { * @return string the absolute version of the url */ public function getAbsoluteURL(string $url): string { - $separator = $url[0] === '/' ? '' : '/'; + $separator = strpos($url, '/') === 0 ? '' : '/'; if (\OC::$CLI && !\defined('PHPUNIT_RUN')) { return rtrim($this->config->getSystemValue('overwrite.cli.url'), '/') . '/' . ltrim($url, '/'); } // The ownCloud web root can already be prepended. - if(substr($url, 0, \strlen(\OC::$WEBROOT)) === \OC::$WEBROOT) { + if(\OC::$WEBROOT !== '' && strpos($url, \OC::$WEBROOT) === 0) { $url = substr($url, \strlen(\OC::$WEBROOT)); } diff --git a/tests/lib/UrlGeneratorTest.php b/tests/lib/UrlGeneratorTest.php index cc93febd53d..9a8e588a229 100644 --- a/tests/lib/UrlGeneratorTest.php +++ b/tests/lib/UrlGeneratorTest.php @@ -145,6 +145,8 @@ class UrlGeneratorTest extends \Test\TestCase { public function provideSubDirURLs() { return [ + ['', 'http://localhost/nextcloud/'], + ['/', 'http://localhost/nextcloud/'], ['index.php', 'http://localhost/nextcloud/index.php'], ['/index.php', 'http://localhost/nextcloud/index.php'], ['/apps/index.php', 'http://localhost/nextcloud/apps/index.php'],