검색엔진이 같은 문서를 여러 URL로 인식하면 신호가 분산됩니다.
특히 Jekyll에서는 템플릿마다 URL 조합 방식이 달라져 canonical이 흔들리기 쉽습니다.

문제

다음 상황이 겹치면 중복 인덱싱 가능성이 높아집니다.

  • 페이지마다 canonical 생성 방식이 다름
  • 상대경로/절대경로 혼용
  • 끝 슬래시(/) 처리 기준 불일치
  • 캠페인 쿼리 파라미터가 canonical에 섞임

결과적으로 같은 콘텐츠가 여러 주소로 수집될 수 있고, 검색 성과 해석도 어려워집니다.

설명

핵심은 canonical 생성 규칙을 한 곳에서 고정하는 것입니다.

  1. site.url + 정규화된 page.url만 사용
  2. 쿼리스트링은 canonical에서 제외
  3. 슬래시 정책(붙임/미붙임)을 사이트 전체에서 동일하게 유지
  4. 모든 레이아웃에서 같은 include를 사용

Jekyll에서는 _includes/seo/canonical.html 같은 공통 파일로 관리하면 페이지별 편차를 줄일 수 있습니다.

예시

아래 예시는 canonical을 절대 URL로 고정하고, index.html 표현을 정리하는 패턴입니다.

{%- assign canonical_path = page.url | replace:'index.html','' -%}
{%- assign canonical_url = canonical_path | absolute_url -%}
<link rel="canonical" href="{{ canonical_url }}">

레이아웃에서는 직접 URL을 조합하지 말고 include만 호출합니다.

{%- include seo/canonical.html -%}

배포 후에는 아래 두 가지를 함께 확인합니다.

  • 페이지 소스의 rel="canonical"
  • Search Console URL 검사에서 Google이 선택한 canonical

내부 링크 후보

요약

Jekyll SEO에서 canonical은 단순 메타태그가 아니라 중복 인덱싱 방지 기준점입니다.

  • 생성 규칙을 include 1곳으로 통합
  • 절대 URL 기준으로 고정
  • 슬래시/쿼리 처리 정책 일관화
  • 배포 후 Search Console로 실제 선택 canonical 검증

이 네 가지를 지키면 페이지 신호 분산을 줄이고, 색인 안정성을 높일 수 있습니다.