From 374b6806d4bb21299a1bc81d420fffb5b0d1db68 Mon Sep 17 00:00:00 2001 From: eritque0arcus Date: Wed, 20 Aug 2025 21:03:34 -0500 Subject: [PATCH] fix: fix alias handle relative path incorrectly --- quartz/plugins/emitters/aliases.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/quartz/plugins/emitters/aliases.ts b/quartz/plugins/emitters/aliases.ts index 9cb9bd576..ebc3c5b44 100644 --- a/quartz/plugins/emitters/aliases.ts +++ b/quartz/plugins/emitters/aliases.ts @@ -1,4 +1,4 @@ -import { FullSlug, isRelativeURL, resolveRelative, simplifySlug } from "../../util/path" +import { FullSlug, resolveRelative, simplifySlug } from "../../util/path" import { QuartzEmitterPlugin } from "../types" import { write } from "./helpers" import { BuildCtx } from "../../util/ctx" @@ -9,11 +9,15 @@ async function* processFile(ctx: BuildCtx, file: VFile) { const ogSlug = simplifySlug(file.data.slug!) for (const aliasTarget of file.data.aliases ?? []) { - const aliasTargetSlug = ( - isRelativeURL(aliasTarget) - ? path.normalize(path.join(ogSlug, "..", aliasTarget)) - : aliasTarget - ) as FullSlug + let aliasTargetSlug: FullSlug + + if (aliasTarget.startsWith('/')) { + // Root-absolute paths: /index -> index + aliasTargetSlug = aliasTarget.slice(1) as FullSlug + } else { + // Everything else is relative to current directory: ./file, ../folder/file, index, xxx/yyy + aliasTargetSlug = path.posix.normalize(path.posix.join(path.posix.dirname(ogSlug), aliasTarget)) as FullSlug + } const redirUrl = resolveRelative(aliasTargetSlug, ogSlug) yield write({