From c582a8d5fd82b84d412c7e6c84e74faeb23beac6 Mon Sep 17 00:00:00 2001 From: yhzx233 <2058777361@qq.com> Date: Mon, 5 Feb 2024 23:52:10 +0800 Subject: [PATCH] fix(theme): correctly normalize paths ending with "index" (#3544) Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> --- src/shared/shared.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/shared/shared.ts b/src/shared/shared.ts index ea5d2cb9..7964f0af 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -16,8 +16,10 @@ export type { export const EXTERNAL_URL_RE = /^(?:[a-z]+:|\/\/)/i export const APPEARANCE_KEY = 'vitepress-theme-appearance' -export const HASH_RE = /#.*$/ -export const EXT_RE = /(index)?\.(md|html)$/ + +const HASH_RE = /#.*$/ +const HASH_OR_QUERY_RE = /[?#].*$/ +const INDEX_OR_EXT_RE = /(?:(^|\/)index)?\.(?:md|html)$/ export const inBrowser = typeof document !== 'undefined' @@ -60,8 +62,10 @@ export function isActive( return true } -export function normalize(path: string): string { - return decodeURI(path).replace(HASH_RE, '').replace(EXT_RE, '') +function normalize(path: string): string { + return decodeURI(path) + .replace(HASH_OR_QUERY_RE, '') + .replace(INDEX_OR_EXT_RE, '$1') } export function isExternal(path: string): boolean {