diff --git a/lib/platform/bitbucket/__snapshots__/index.spec.ts.snap b/lib/platform/bitbucket/__snapshots__/index.spec.ts.snap
index 7a04b76efda8537e7e3c88c84a0847bc57474dcd..c5ead11ef57ce6b20ad8c5358da7538fd579612e 100644
--- a/lib/platform/bitbucket/__snapshots__/index.spec.ts.snap
+++ b/lib/platform/bitbucket/__snapshots__/index.spec.ts.snap
@@ -1105,7 +1105,7 @@ Array [
       "user-agent": "https://github.com/renovatebot/renovate",
     },
     "method": "GET",
-    "url": "https://api.bitbucket.org/2.0/repositories/?role=contributor&pagelen=100",
+    "url": "https://api.bitbucket.org/2.0/repositories?role=contributor&pagelen=100",
   },
 ]
 `;
diff --git a/lib/platform/bitbucket/index.spec.ts b/lib/platform/bitbucket/index.spec.ts
index 13cdab170282f227fca2687ae30b1b61de61080a..c810369d8a77555fc025fc7c350a8a9c96585bad 100644
--- a/lib/platform/bitbucket/index.spec.ts
+++ b/lib/platform/bitbucket/index.spec.ts
@@ -126,7 +126,7 @@ describe('platform/bitbucket', () => {
     it('returns repos', async () => {
       httpMock
         .scope(baseUrl)
-        .get('/2.0/repositories/?role=contributor&pagelen=100')
+        .get('/2.0/repositories?role=contributor&pagelen=100')
         .reply(200, {
           values: [{ full_name: 'foo/bar' }, { full_name: 'some/repo' }],
         });
diff --git a/lib/util/http/index.ts b/lib/util/http/index.ts
index 8cb1e3af52052ceb1eeea1de64dc0dc6e215ee6a..06ff0f2636c86b9deb855fc0a19d722463cb5be2 100644
--- a/lib/util/http/index.ts
+++ b/lib/util/http/index.ts
@@ -1,11 +1,11 @@
 import crypto from 'crypto';
-import URL from 'url';
 import got, { Options, Response } from 'got';
 import { HOST_DISABLED } from '../../constants/error-messages';
 import { logger } from '../../logger';
 import { ExternalHostError } from '../../types/errors/external-host-error';
 import * as memCache from '../cache/memory';
 import { clone } from '../clone';
+import { resolveBaseUrl } from '../url';
 import { applyAuthorization, removeAuthorization } from './auth';
 import { applyHostRules } from './host-rules';
 import { GotOptions } from './types';
@@ -95,7 +95,7 @@ export class Http<GetOptions = HttpOptions, PostOptions = HttpPostOptions> {
   ): Promise<HttpResponse<T> | null> {
     let url = requestUrl.toString();
     if (httpOptions?.baseUrl) {
-      url = URL.resolve(httpOptions.baseUrl, url);
+      url = resolveBaseUrl(httpOptions.baseUrl, url);
     }
     // TODO: deep merge in order to merge headers
     let options: GotOptions = {
@@ -227,7 +227,7 @@ export class Http<GetOptions = HttpOptions, PostOptions = HttpPostOptions> {
     // istanbul ignore else: needs test
     if (options?.baseUrl) {
       // eslint-disable-next-line no-param-reassign
-      url = URL.resolve(options.baseUrl, url);
+      url = resolveBaseUrl(options.baseUrl, url);
     }
 
     applyDefaultHeaders(combinedOptions);