55 lines
1.9 KiB
JavaScript
55 lines
1.9 KiB
JavaScript
import { REGIONS_DATA } from '../src/data/regions.js';
|
|
import { TARGETS, SUBJECTS } from '../src/data/subjects.js';
|
|
|
|
// 사이트맵 / 사전 렌더링 공용: 색인 대상 랜딩 페이지 경로 전체
|
|
export function getLandingPaths() {
|
|
const paths = [];
|
|
REGIONS_DATA.forEach((sido) => {
|
|
sido.sigunguList.forEach((sigungu) => {
|
|
sigungu.dongList.forEach((dong) => {
|
|
TARGETS.forEach((target) => {
|
|
SUBJECTS.forEach((sub) => {
|
|
paths.push(`/${sido.sidoSlug}/${sigungu.sigunguSlug}/${dong.dongSlug}/${target.slug}/${sub.slug}`);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
return paths;
|
|
}
|
|
|
|
// 시도별 랜딩 페이지 경로 조회
|
|
export function getLandingPathsForSido(sidoSlug) {
|
|
const paths = [];
|
|
const targetSido = REGIONS_DATA.find((s) => s.sidoSlug === sidoSlug);
|
|
if (!targetSido) return paths;
|
|
|
|
targetSido.sigunguList.forEach((sigungu) => {
|
|
sigungu.dongList.forEach((dong) => {
|
|
TARGETS.forEach((target) => {
|
|
SUBJECTS.forEach((sub) => {
|
|
paths.push(`/${targetSido.sidoSlug}/${sigungu.sigunguSlug}/${dong.dongSlug}/${target.slug}/${sub.slug}`);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
return paths;
|
|
}
|
|
|
|
// 사전 렌더링(SSG) 대상 경로
|
|
// OneDrive 동기화 잠금 및 Cloudflare 대시보드 폴더 탐색 멈춤(무한 업로드)을 방지하기 위해
|
|
// 물리적 중첩 폴더는 대표 핵심 경로만 최소한으로 생성하고 _redirects (200 OK) 로 전체 라우팅을 처리합니다.
|
|
export function getPrerenderPaths() {
|
|
const isAll = process.env.PRERENDER_ALL === 'true';
|
|
if (isAll) {
|
|
return getLandingPaths();
|
|
}
|
|
return [
|
|
'/daegu/suseong-gu/hwanggeum-dong/middle/math',
|
|
'/incheon/yeonsu-gu/songdo-dong/middle/math',
|
|
'/seoul/gangnam-gu/daechi-dong/high/math',
|
|
'/gyeonggi/seongnam-si-bundang-gu/sunae-dong/middle/english',
|
|
'/busan/haeundae-gu/u-dong/middle/english'
|
|
];
|
|
}
|