From c18e6cd5bb7e0de7e1a9a77927b48069f0bad4b9 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Mon, 24 Mar 2025 03:38:06 +0000
Subject: [PATCH] fix(alias): resolve relative if alias is relative

---
 quartz/plugins/emitters/aliases.ts |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/quartz/plugins/emitters/aliases.ts b/quartz/plugins/emitters/aliases.ts
index 327cde8..0eb4f3a 100644
--- a/quartz/plugins/emitters/aliases.ts
+++ b/quartz/plugins/emitters/aliases.ts
@@ -1,14 +1,19 @@
-import { resolveRelative, simplifySlug } from "../../util/path"
+import { isRelativeURL, resolveRelative, simplifySlug } from "../../util/path"
 import { QuartzEmitterPlugin } from "../types"
 import { write } from "./helpers"
 import { BuildCtx } from "../../util/ctx"
 import { VFile } from "vfile"
+import path from "path"
 
 async function* processFile(ctx: BuildCtx, file: VFile) {
   const ogSlug = simplifySlug(file.data.slug!)
 
-  for (const slug of file.data.aliases ?? []) {
-    const redirUrl = resolveRelative(slug, file.data.slug!)
+  for (const aliasTarget of file.data.aliases ?? []) {
+    const aliasTargetSlug = isRelativeURL(aliasTarget)
+      ? path.normalize(path.join(ogSlug, "..", aliasTarget))
+      : aliasTarget
+
+    const redirUrl = resolveRelative(aliasTargetSlug, ogSlug)
     yield write({
       ctx,
       content: `
@@ -23,7 +28,7 @@
         </head>
         </html>
         `,
-      slug,
+      slug: aliasTargetSlug,
       ext: ".html",
     })
   }

--
Gitblit v1.10.0