sitemap nextjs 14.2 버전 이후로는 로컬라이징한 언어별로 sitemap을 맵핑 할 수 있다.
기본코드
공식 문서에 따르자면 아래와 같이 코드를 작성하면
import { MetadataRoute } from 'next'
export default function sitemap(): MetadataRoute.Sitemap {
return [
{
url: 'https://acme.com',
lastModified: new Date(),
alternates: {
languages: {
es: 'https://acme.com/es',
de: 'https://acme.com/de',
},
},
},
]
}
출력은 이렇게 된다고 한다.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://acme.com</loc>
<xhtml:link
rel="alternate"
hreflang="es"
href="https://acme.com/es"/>
<xhtml:link
rel="alternate"
hreflang="de"
href="https://acme.com/de"/>
<lastmod>2023-04-06T15:02:24.021Z</lastmod>
</url>
</urlset>
응용하기
이미 path name을 config 파일에서 관리 하고 있기 때문에
const basePath = "https://test.com";
export default function sitemap(): MetadataRoute.Sitemap {
const viewCount = Object.keys(pathnames).length;
var list: any[] = [];
for (let i = 0; i < viewCount; i++) {
var path = Object.keys(pathnames)[i];
list.push(
{
url: basePath + path,
lastModified: new Date(),
alternates: {
languages: {
en: basePath + '/en' + path,
es: basePath + '/es' + path,
ko: basePath + '/ko' + path,
},
},
},
);
}
return list;
}
이런식으로 구현했다.
아직 더 좋은 코드를 생각하지 못했다.
이건 app router 방식이다.
사이트/sitemap.xml 에서 확인 할 수 있고.
view page source로 xml 파일을 확인 할 수 있다.
가장중요한 것
app/sitemap.ts 파일이 위치해야 한다.
https://nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap
Metadata Files: sitemap.xml | Next.js
API Reference for the sitemap.xml file.
nextjs.org
'develop' 카테고리의 다른 글
AI 개발툴 정리 (0) | 2024.11.13 |
---|---|
iOS 시뮬레이터 키보드 입력 안될 때 mac 키보드로 입력하기 (0) | 2024.08.05 |
TypeScript useState 타입 지정하기 List type 지정 (0) | 2024.03.06 |
Next.js App Router 다국어 지원하기 i18n next-intl (0) | 2024.02.03 |
C#과 Java의 특징과 차이점을 알아보자 (0) | 2023.08.18 |