@zalkera/client 0.22.0 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/llms.txt +11 -1
  2. package/package.json +1 -1
package/llms.txt CHANGED
@@ -486,8 +486,18 @@ export const pageSlugs = (): string[] => Object.keys(pages); // sitemap·gener
486
486
  export const dynamic = "force-static";
487
487
  export function generateStaticParams() { return pageSlugs().map((slug) => ({ slug })); }
488
488
 
489
+ /** 세그먼트를 사람이 쓴 값으로. 못 되돌리면 원문을 그대로 준다(주소창에 아무거나 쳐도 500 이 안 나게). */
490
+ const routeParam = (raw: string) => { try { return decodeURIComponent(raw); } catch { return raw; } };
491
+
489
492
  export default async function StaticPage({ params }: { params: Promise<{ slug: string }> }) {
490
- const { slug } = await params;
493
+ // `params` 주는 값은 **퍼센트 인코딩된 원문**이다. `generateStaticParams` 는 디코드된 값
494
+ // (`회사연혁`)을 돌려주는데 이 컴포넌트는 `%ED%9A%8C...` 를 받는다. 그대로 조회하면 miss 해서
495
+ // `notFound()` 로 떨어지고, sitemap 은 디코드된 URL 로 **그 404 를 크롤러에 광고**한다.
496
+ // ASCII slug 는 인코딩이 항등이라 이 결함이 안 보인다 — 한국어 사이트에서는 기본값이다.
497
+ // `generateMetadata` 도 params 를 **따로** 읽으므로 거기서도 같이 풀어야 한다(한 곳만 고치면
498
+ // 제목은 나오는데 본문이 404 인 형상이 된다).
499
+ const { slug: rawSlug } = await params;
500
+ const slug = routeParam(rawSlug);
491
501
  const page = loadPageContent(slug);
492
502
  if (!page) notFound();
493
503
  if (slug === "home") redirect("/"); // 홈의 정본 주소는 루트다(같은 내용이 두 URL 로 색인되면 손해)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zalkera/client",
3
- "version": "0.22.0",
3
+ "version": "0.22.1",
4
4
  "description": "zalkera 헤드리스 CMS 공개 API 클라이언트 (테넌트 사이트용)",
5
5
  "license": "MIT",
6
6
  "author": "Credium Co., Ltd.",