diff --git a/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.tsx b/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.tsx index 4cca965759..5478f7c358 100644 --- a/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.tsx +++ b/packages/docusaurus/src/client/exports/__tests__/useBaseUrl.test.tsx @@ -77,6 +77,7 @@ describe('useBaseUrl', () => { expect(mockUseBaseUrl('/hello/foo', {absolute: true})).toBe( 'https://docusaurus.io/docusaurus/hello/foo', ); + expect(mockUseBaseUrl('/docusaurus')).toBe('/docusaurus/'); expect(mockUseBaseUrl('/docusaurus/')).toBe('/docusaurus/'); expect(mockUseBaseUrl('/docusaurus/hello')).toBe('/docusaurus/hello'); expect(mockUseBaseUrl('#hello')).toBe('#hello'); @@ -143,6 +144,7 @@ describe('useBaseUrlUtils().withBaseUrl()', () => { expect(withBaseUrl('/hello/foo', {absolute: true})).toBe( 'https://docusaurus.io/docusaurus/hello/foo', ); + expect(withBaseUrl('/docusaurus')).toBe('/docusaurus/'); expect(withBaseUrl('/docusaurus/')).toBe('/docusaurus/'); expect(withBaseUrl('/docusaurus/hello')).toBe('/docusaurus/hello'); expect(withBaseUrl('#hello')).toBe('#hello'); diff --git a/packages/docusaurus/src/client/exports/useBaseUrl.ts b/packages/docusaurus/src/client/exports/useBaseUrl.ts index a709e29380..5ae4640a15 100644 --- a/packages/docusaurus/src/client/exports/useBaseUrl.ts +++ b/packages/docusaurus/src/client/exports/useBaseUrl.ts @@ -33,6 +33,12 @@ function addBaseUrl( return baseUrl + url.replace(/^\//, ''); } + // /baseUrl -> /baseUrl/ + // https://github.com/facebook/docusaurus/issues/6315 + if (url === baseUrl.replace(/\/$/, '')) { + return baseUrl; + } + // We should avoid adding the baseurl twice if it's already there const shouldAddBaseUrl = !url.startsWith(baseUrl);