diff --git a/packages/docusaurus-utils/src/__tests__/index.test.ts b/packages/docusaurus-utils/src/__tests__/index.test.ts index fd251e3205..a47fc0f15e 100644 --- a/packages/docusaurus-utils/src/__tests__/index.test.ts +++ b/packages/docusaurus-utils/src/__tests__/index.test.ts @@ -250,6 +250,10 @@ describe('load utils', () => { input: ['/test/', '/docs', 'ro', 'doc1'], output: '/test/docs/ro/doc1', }, + { + input: ['/test/', '/', 'ro', 'doc1'], + output: '/test/ro/doc1', + }, { input: ['', '/', 'ko', 'hello'], output: '/ko/hello', diff --git a/packages/docusaurus-utils/src/index.ts b/packages/docusaurus-utils/src/index.ts index a8a457ab1f..2309c680be 100644 --- a/packages/docusaurus-utils/src/index.ts +++ b/packages/docusaurus-utils/src/index.ts @@ -253,8 +253,8 @@ export function normalizeUrl(rawUrls: string[]): string { const parts = str.split('?'); str = parts.shift() + (parts.length > 0 ? '?' : '') + parts.join('&'); - // Dedupe forward slashes. - str = str.replace(/^\/+/, '/'); + // Dedupe forward slashes in the entire path, avoiding protocol slashes. + str = str.replace(/([^:]\/)\/+/g, '$1'); return str; }