sitemap.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { MetadataRoute } from 'next';
  2. import { fetchBoardList } from '@/lib/api/forum/board';
  3. const BASE_URL = 'https://dpot.web.or.kr';
  4. export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  5. // 정적 페이지
  6. const staticPages: MetadataRoute.Sitemap = [
  7. { url: BASE_URL, changeFrequency: 'daily', priority: 1.0 },
  8. { url: `${BASE_URL}/login`, changeFrequency: 'monthly', priority: 0.3 },
  9. { url: `${BASE_URL}/register`, changeFrequency: 'monthly', priority: 0.3 },
  10. { url: `${BASE_URL}/docs`, changeFrequency: 'weekly', priority: 0.5 },
  11. { url: `${BASE_URL}/support/faq`, changeFrequency: 'monthly', priority: 0.4 },
  12. { url: `${BASE_URL}/support/guide`, changeFrequency: 'monthly', priority: 0.4 },
  13. { url: `${BASE_URL}/support/contact`, changeFrequency: 'monthly', priority: 0.3 },
  14. ];
  15. // 동적: 게시판 목록
  16. let boardPages: MetadataRoute.Sitemap = [];
  17. try {
  18. const res = await fetchBoardList();
  19. if (res.success && res.data?.list) {
  20. boardPages = res.data.list
  21. .filter(b => b.isActive)
  22. .map(b => ({
  23. url: `${BASE_URL}/board/${b.code}`,
  24. changeFrequency: 'daily' as const,
  25. priority: 0.8,
  26. }));
  27. }
  28. } catch {
  29. }
  30. return [...staticPages, ...boardPages];
  31. }