이 분석은 Google Search Central과 Astro 공식 문서를 기준으로, Oaty 프로젝트에 적용된 sitemap, canonical, noindex 정책이 검색엔진에 어떤 신호를 보내는지 객관적으로 정리한 문서입니다.
공식 기준
Google은 canonical 판단에 여러 신호를 사용합니다. rel=“canonical”은 강한 신호이고, sitemap 포함은 더 약한 canonical 신호입니다. 따라서 같은 URL에 대해 sitemap과 canonical이 서로 다른 대표 URL을 가리키지 않도록 일관성을 유지해야 합니다.
출처: Google canonical 문서
Google은 sitemap을 “검색엔진이 사이트의 중요한 URL을 더 효율적으로 발견하도록 돕는 파일”로 설명합니다. 다만 sitemap에 포함된 URL이 반드시 크롤링되거나 색인된다는 보장은 없습니다.
출처: Google sitemap 문서
noindex는 검색 결과에서 특정 페이지를 제외하는 지시입니다. 단, Googlebot이 해당 페이지를 크롤링해 noindex를 읽을 수 있어야 하므로 robots.txt로 차단하면 안 됩니다.
출처: Google noindex 문서
현재 구현 상태
프로젝트는 astro.config.ts (line 9)에서 @astrojs/sitemap을 사용해 sitemap을 생성합니다. Astro 공식 문서에 따르면 sitemap integration의 filter()는 URL별 sitemap 포함 여부를 제어할 수 있습니다.
출처: Astro sitemap integration 문서
현재 sitemap filter는 다음 URL을 제외합니다.
- /admin
- /admin/*
- /archives/{slug}/2+
- /tags/{slug}/2+
반대로 다음 URL은 sitemap에 포함됩니다.
- 홈
- 고정 페이지
- 게시글
- /archives
- /archives/{category} 첫 페이지
- /tags
- /tags/{tag} 첫 페이지
Canonical 정책
BaseHead.astro (line 29)는 모든 공개 HTML 페이지에 canonical URL을 출력합니다. 전달된 canonicalURL이 있으면 그 값을 사용하고, 없으면 현재 경로와 Astro.site를 조합합니다.
카테고리/태그 archive 첫 페이지는 자기 자신을 canonical로 둡니다.
html
<link rel="canonical" href="https://oaty.lol/archives/web">
카테고리/태그 pagination 2페이지 이상도 자기 자신을 canonical로 둡니다.
html
<link rel="canonical" href="https://oaty.lol/archives/web/2"> <meta name="robots" content="noindex">
이 설계는 pagination 페이지를 1페이지의 중복 페이지로 처리하지 않습니다. 대신 “사용자 탐색용 실제 페이지지만 검색 결과에는 노출하지 않는 페이지”로 정의합니다.
신호 일관성 평가
현재 정책은 공식 기준과 대체로 일관됩니다.
- 색인 대상 URL은 sitemap에 포함됩니다.
- 검색 결과에서 제외할 pagination URL은 sitemap에서 제외됩니다.
- pagination URL은 robots.txt로 차단하지 않으므로 Googlebot이 noindex를 읽을 수 있습니다.
- pagination에는 nofollow를 붙이지 않아 내부 게시글 링크 탐색 경로를 유지합니다.
- canonical은 HTML <head>에 절대 URL로 출력됩니다.
즉, 현재 구조는 “게시글과 주요 archive 첫 페이지 중심으로 검색 노출을 집중시키고, archive pagination이 실제 게시글보다 상위 노출되는 상황을 줄이는 정책”입니다.