Redirect legacy document URLs after authentication without prerendering aliases
Verify and deploy Tabularium / verify-and-deploy (pull_request) Successful in 5m25s

This commit is contained in:
2026-10-28 19:15:31 +08:00
parent c49c8348d2
commit e286139572
3 changed files with 20 additions and 9 deletions
+2 -4
View File
@@ -25,16 +25,14 @@ import { headingsFor } from "@/lib/navigation";
type Props = { doc: Doc; docs: DocLink[] };
export const getStaticPaths: GetStaticPaths = async () => ({
paths: (await listDocs()).flatMap(({ slug, sourceSlug }) => [...new Set([slug, sourceSlug])].map((value) => ({ params: { slug: value.split("/") } }))),
paths: (await listDocs()).map(({ slug }) => ({ params: { slug: slug.split("/") } })),
fallback: false,
});
export const getStaticProps: GetStaticProps<Props> = async ({ params }) => {
const slug = Array.isArray(params?.slug) ? params.slug.join("/") : params?.slug;
if (typeof slug !== "string") return { notFound: true };
const docs = await listDocs();
const match = docs.find((d) => d.slug === slug || d.sourceSlug === slug);
if (!match) return { notFound: true };
if (slug !== match.slug) return { redirect: { destination: `/docs/${match.slug}`, permanent: true } };
if (!docs.some((d) => d.slug === slug)) return { notFound: true };
return { props: { doc: await readDoc(slug), docs } };
};
function textOf(value: ReactNode): string {