← 전체 글로 돌아가기

Next.js

sitemap.xml이 크롤러에게 제대로 읽히지 않을 때

sitemap.xml이 생성되긴 했지만 검색 엔진 크롤러가 페이지를 수집하지 못할 때의 진단 방법.

Next.js 사이트를 배포한 후 Google이나 다른 검색 엔진이 모든 페이지를 크롤링하지 못한다면, sitemap.xml 설정을 확인해야 한다. 특히 동적 라우팅이나 여러 버전의 페이지가 있을 때 문제가 자주 발생한다.

sitemap.xml 접근 확인

먼저 sitemap.xml 파일이 실제로 공개되어 있고 접근 가능한지 확인한다.

curl -s https://example.com/sitemap.xml

또는 브라우저에서 직접 방문해서 확인한다. 200 응답이 나와야 한다.

sitemap.xml 내용 확인

실제로 나열된 URL들을 확인한다.

curl -s https://example.com/sitemap.xml | grep -c 'loc'

URL 개수가 예상과 맞는가? 만약 특정 카테고리의 페이지가 완전히 빠져 있다면, 사이트맵 생성 로직에 문제가 있는 것이다.

빌드 설정 확인

Next.js에서 sitemap.xml은 보통 next.config.js나 특정 라우트 파일에서 동적으로 생성된다.

npm run build

빌드 중 sitemap 생성 관련 로그가 있는지 확인한다. 만약 오류가 있었다면 로그에 표시될 것이다.

메타데이터 연계 확인

canonical 태그와 sitemap.xml의 URL이 일치하는지 확인한다. 만약 canonical이 이상한 주소를 가리키고 있다면, 크롤러는 혼동할 수 있다.

curl -s https://example.com/page | grep -Ei 'title|description|canonical|og:|twitter:'

HTML head 메타데이터

각 페이지의 og:title, og:description 같은 OG 태그가 제대로 채워져 있는가. 만약 이런 메타데이터가 비어 있다면, 검색 결과에 제대로 표시되지 않는다.

크롤러 접근성

robots.txt에서 sitemap.xml이 있는 경로를 차단하지 않았는지 확인한다.

curl -s https://example.com/robots.txt

robots.txt에 다음과 같이 명시적으로 sitemap.xml을 등록하면 좋다.

Sitemap: https://example.com/sitemap.xml

구글 Search Console 검증

Google Search Console에서 sitemap.xml을 등록하고, 크롤링 상태를 확인한다.

  • 제출된 URL과 색인된 URL의 개수가 크게 차이나는가
  • 어느 페이지가 색인되지 않는가
  • 오류 메시지가 있는가

최종 확인

  1. 공개 URL에서 새로운 콘텐츠가 실제로 크롤링되는지 모니터링
  2. 빌드 결과에서 모든 페이지가 sitemap에 포함되는지 확인
  3. 배포 직후 Search Console에서 "URL 검사" 실행

Sitemap이 제대로 설정되면, 검색 엔진이 사이트의 모든 페이지를 더 빠르고 정확하게 크롤링할 수 있다.