canonical 태그(rel="canonical")는 "이 페이지의 대표 주소는 여기다"라고 검색엔진에 알려주는 표시입니다. 중복되거나 비슷한 페이지가 여러 개일 때, 어느 것을 검색 결과에 내보낼지 정리하는 도구입니다. 그런데 이 태그는 잘 쓰면 중복 문제를 깔끔하게 정리하지만, 잘못 쓰면 멀쩡한 페이지를 검색에서 스스로 지워버리는 위험한 도구이기도 합니다. 실제로 canonical 하나를 잘못 걸어 사이트 절반이 색인에서 빠지는 경우가 있습니다. 이 글은 canonical이 실제로 무엇을 하고, 어떤 상황에 써야 하며, 어떤 실수를 피해야 하는지 실무 기준으로 정리합니다.
canonical이 실제로 하는 일
canonical은 "명령"이 아니라 "강한 힌트"입니다. 여러 URL에 같거나 비슷한 내용이 있을 때, 구글에 "이 중 대표는 이거다"라고 알려줍니다. 그러면 구글은 대표 URL을 검색에 내보내고, 나머지의 신호(링크 등)를 대표로 합쳐줍니다.
핵심은 "힌트"라는 점입니다. 구글이 판단상 다른 URL이 더 대표에 가깝다고 보면 무시할 수도 있습니다. 그래서 canonical은 "이렇게 처리해 달라"는 요청에 가깝고, 강제력이 있는 noindex·리다이렉트와는 성격이 다릅니다.
canonical이 필요한 대표 상황
중복이 자연스럽게 생기는 상황에서 canonical이 빛을 봅니다.
- URL 파라미터 — 정렬·필터·추적 파라미터로 같은 페이지가 여러 주소로 생김
- 같은 상품이 여러 카테고리 경로에 존재 — 쇼핑몰에서 흔함
- www/비www, http/https, 슬래시 유무 등 주소 변형
- 인쇄용·모바일용 등 거의 동일한 사본 페이지
이런 경우 대표 URL을 정해 모든 변형이 그 대표를 가리키게 하면, 색인이 흩어지지 않고 신호가 한곳에 모입니다. URL 변형이 색인을 분산시키는 문제는 사이트가 검색에 안 나올 때에서도 다뤘습니다.
가장 흔한 사고 — 전 페이지가 한 URL을 가리킴
실전에서 가장 파괴적인 실수는 "사이트 전체 페이지의 canonical이 홈(또는 특정 한 페이지)을 가리키는" 경우입니다. 템플릿에 canonical을 잘못 박아두면 이런 일이 벌어집니다.
이러면 구글은 "이 사이트의 모든 페이지의 대표는 홈이다"로 이해해, 개별 페이지들을 색인에서 뺄 수 있습니다. 수백 개 페이지가 통째로 검색에서 사라지는 것입니다. canonical을 자동 생성하는 CMS·플러그인을 쓸 때는, 각 페이지가 "자기 자신"을 가리키는지 꼭 확인해야 합니다.
canonical vs noindex vs 301 — 언제 무엇을
셋은 비슷해 보여도 목적이 다릅니다. 상황에 맞게 골라야 합니다.
- canonical — 둘 다 살려두되 대표만 검색에 내보내고 싶을 때(비슷한 페이지, 파라미터)
- 301 리다이렉트 — 한 URL을 완전히 다른 URL로 영구 이전할 때(옛 주소는 없앰)
- noindex — 페이지는 접근 가능하되 검색에선 빼고 싶을 때(감사 페이지, 로그인 등)
예를 들어 사이트를 옮겼다면 canonical이 아니라 301이 맞고, 완전히 안 보이게 하려면 canonical이 아니라 noindex가 맞습니다. 이 셋을 섞으면 의도와 다른 결과가 납니다. noindex·robots의 차이는 robots.txt와 meta robots에서 다뤘습니다.
자주 나는 실수들
canonical에서 반복적으로 보이는 실수를 모으면 다음과 같습니다.
- 대표 URL이 정작 noindex거나 차단됨 — 가리키는 대상이 색인 불가라 신호가 붕 뜸
- canonical이 리다이렉트되는 URL을 가리킴 — 대표가 또 다른 곳으로 넘어가 혼란
- 상대 경로·오타로 엉뚱한 URL 지정 — 전체 절대 URL로 정확히 쓰는 게 안전
- 페이지네이션(2·3페이지)을 1페이지로 canonical — 2페이지 이후 내용이 색인에서 사라질 수 있음
공통점은 "가리키는 대상이 잘못됐다"는 것입니다. canonical은 방향을 정하는 표지판이라, 표지판이 엉뚱한 곳을 가리키면 그대로 길을 잃습니다.
눈에 안 보이니 점검이 중요합니다
canonical은 화면에 안 보여서 문제가 생겨도 늦게 발견됩니다. 주기적으로 점검하는 게 좋습니다.
- 서치콘솔 URL 검사 — "사용자가 선언한 표준"과 "구글이 선택한 표준"을 함께 봅니다. 둘이 다르면 구글이 내 canonical을 무시한 것
- 페이지 소스 확인 — 주요 페이지가 자기 자신을 canonical로 가리키는지
- 크롤 도구로 전체 점검 — 사이트 전체의 canonical이 한곳으로 쏠리지 않는지
특히 "구글이 선택한 표준"이 내 의도와 다르면, canonical 신호가 약하거나 다른 신호(내부 링크·리다이렉트)와 충돌한다는 뜻입니다.
정리 — canonical은 "표지판"입니다
canonical은 색인을 지우는 도구가 아니라 "대표를 가리키는 표지판"입니다. 그래서 중복을 정리할 때는 유용하지만, "안 보이게 하기"나 "이전"에는 맞지 않습니다.
가장 안전한 기본은 "모든 페이지가 자기 자신을 canonical로 가리키게 두고, 진짜 중복에만 예외적으로 대표를 지정하는 것"입니다. 잘 모를 때 함부로 홈이나 특정 페이지로 몰아 지정하지 않는 것만으로 큰 사고를 피할 수 있습니다.
