diff --git a/packages/shared/src/utils/ensureEndingSlash.ts b/packages/shared/src/utils/ensureEndingSlash.ts index f058fbf12e..678f3eeefc 100644 --- a/packages/shared/src/utils/ensureEndingSlash.ts +++ b/packages/shared/src/utils/ensureEndingSlash.ts @@ -2,4 +2,4 @@ * Ensure a url string to have ending slash / */ export const ensureEndingSlash = (str: string): string => - /(\.html|\/)$/.test(str) ? str : str + '/' + str[str.length - 1] === '/' || str.endsWith('.html') ? str : `${str}/` diff --git a/packages/shared/src/utils/ensureLeadingSlash.ts b/packages/shared/src/utils/ensureLeadingSlash.ts index b2446b63c3..1d574a86b4 100644 --- a/packages/shared/src/utils/ensureLeadingSlash.ts +++ b/packages/shared/src/utils/ensureLeadingSlash.ts @@ -2,4 +2,4 @@ * Ensure a url string to have leading slash / */ export const ensureLeadingSlash = (str: string): string => - str.replace(/^\/?/, '/') + str[0] === '/' ? str : `/${str}` diff --git a/packages/shared/src/utils/removeEndingSlash.ts b/packages/shared/src/utils/removeEndingSlash.ts index a8ab2a8c05..38c12f8fe4 100644 --- a/packages/shared/src/utils/removeEndingSlash.ts +++ b/packages/shared/src/utils/removeEndingSlash.ts @@ -1,4 +1,5 @@ /** * Remove ending slash / from a string */ -export const removeEndingSlash = (str: string): string => str.replace(/\/$/, '') +export const removeEndingSlash = (str: string): string => + str[str.length - 1] === '/' ? str.slice(0, -1) : str diff --git a/packages/shared/src/utils/removeLeadingSlash.ts b/packages/shared/src/utils/removeLeadingSlash.ts index 1fb2a9a949..227c1dff5f 100644 --- a/packages/shared/src/utils/removeLeadingSlash.ts +++ b/packages/shared/src/utils/removeLeadingSlash.ts @@ -2,4 +2,4 @@ * Remove leading slash / from a string */ export const removeLeadingSlash = (str: string): string => - str.replace(/^\//, '') + str[0] === '/' ? str.slice(1) : str diff --git a/packages/shared/src/utils/resolveRoutePathFromUrl.ts b/packages/shared/src/utils/resolveRoutePathFromUrl.ts index 3781f0828c..da25efd99c 100644 --- a/packages/shared/src/utils/resolveRoutePathFromUrl.ts +++ b/packages/shared/src/utils/resolveRoutePathFromUrl.ts @@ -1,6 +1,10 @@ -export const resolveRoutePathFromUrl = (url: string, base = '/'): string => - url +export const resolveRoutePathFromUrl = (url: string, base = '/'): string => { + const pathname = url // remove url origin .replace(/^(https?:)?\/\/[^/]*/, '') - // remove site base - .replace(new RegExp(`^${base}`), '/') + + // remove site base + return pathname.startsWith(base) + ? `/${pathname.slice(base.length)}` + : pathname +}