Field guide / canonical
canonical 태그 완전 가이드
중복 URL 문제를 해결하는 표준 URL 지정 방법, 자기참조 canonical 규칙, 파라미터와 페이지네이션 처리, 리디렉션·hreflang과의 관계를 예제로 설명합니다.
- 작성
- 수정
- 작성자
- 검토
- 애드브랜치 편집팀
canonical 태그란 무엇인가
canonical 태그란 같은 내용에 도달하는 여러 URL 가운데 어느 것을 대표 주소로 삼을지 검색엔진에 알리는 <link> 요소입니다. 여기서 대표 URL(정규 URL)이란 검색엔진이 검색결과에 보여 주고 평가의 기준으로 삼는 하나의 주소를 말합니다. 중요한 성질이 하나 있습니다. canonical은 명령이 아니라 강한 힌트입니다. 검색엔진은 여러 신호를 종합해 다른 URL을 대표로 고를 수도 있습니다.
중복 URL이 왜 문제인가
같은 상품 페이지가 아래처럼 여러 주소로 열리는 상황을 생각해 보세요.
https://example.com/product/42
https://example.com/product/42?utm_source=newsletter
https://example.com/product/42?color=blue
https://www.example.com/product/42
http://example.com/product/42
사람에게는 한 페이지지만 검색엔진에는 다섯 개의 URL입니다. 이 상태를 방치하면 세 가지 손해가 생깁니다. 첫째, 외부에서 들어온 링크 평가가 여러 주소로 쪼개집니다. 둘째, 크롤러가 같은 내용을 반복해서 가져가며 예산을 낭비합니다. 셋째, 검색결과에 노출되는 주소를 예측할 수 없게 됩니다. 애드브랜치 검사기는 canonical-missing으로 태그 존재를, canonical-target-valid로 가리키는 주소의 유효성을, canonical-self-reference로 자기 자신을 가리키는지를 확인합니다.
기본 사용법
<head> 안에 한 개만 넣습니다. 상대 경로도 해석은 되지만, 배포 환경에 따라 기준 URL이 달라지는 사고를 막기 위해 절대 URL을 권합니다.
<head>
<meta charset="utf-8" />
<title>블루 러닝화 42 - 예제상점</title>
<link rel="canonical" href="https://example.com/product/42" />
</head>
HTML을 넣을 수 없는 PDF 같은 파일은 HTTP 응답 헤더로 같은 일을 할 수 있습니다.
Link: <https://example.com/files/report.pdf>; rel="canonical"
자기참조 canonical
대표 URL 자신도 자기 주소를 canonical로 적어야 합니다. 이걸 자기참조 canonical이라고 부릅니다. 굳이 필요할까 싶지만 효과가 큽니다. 광고 파라미터가 붙은 주소로 접속한 사용자가 그 주소를 복사해 공유해도, 페이지가 스스로 “내 대표 주소는 이것”이라고 말해 주기 때문입니다.
잘못된 예와 수정된 예
1. 모든 페이지가 홈을 가리키는 경우
가장 파괴적인 실수입니다. 공통 레이아웃 템플릿에 canonical을 하드코딩하면 이렇게 됩니다.
<!-- 잘못된 예: 상세 페이지인데 홈을 가리킴 -->
<link rel="canonical" href="https://example.com/" />
이 상태에서는 검색엔진이 모든 하위 페이지를 홈의 중복으로 해석할 수 있고, 결과적으로 개별 페이지가 검색결과에서 사라질 수 있습니다.
<!-- 수정된 예: 현재 페이지의 절대 URL -->
<link rel="canonical" href="https://example.com/product/42" />
템플릿에서는 현재 경로를 사이트 기본 도메인과 합쳐 동적으로 생성하세요.
2. 파라미터가 붙은 주소를 그대로 canonical로 출력
<!-- 잘못된 예: 접속한 URL을 그대로 반사 -->
<link rel="canonical" href="https://example.com/product/42?utm_source=newsletter&color=blue" />
추적 파라미터는 내용을 바꾸지 않으므로 대표 URL에서 빼야 합니다. 반대로 ?page=2처럼 내용을 실제로 바꾸는 파라미터는 남겨야 합니다.
<!-- 수정된 예: 내용에 영향 없는 파라미터 제거 -->
<link rel="canonical" href="https://example.com/product/42" />
3. 페이지네이션을 1페이지로 몰아주기
<!-- 잘못된 예: 목록 3페이지가 1페이지를 canonical로 지정 -->
<link rel="canonical" href="https://example.com/blog" />
3페이지에만 있는 글은 1페이지에 없습니다. 내용이 다른데 중복이라고 선언하면 그 글들이 색인에서 빠질 수 있습니다.
<!-- 수정된 예: 각 페이지가 자기 자신을 가리킴 -->
<link rel="canonical" href="https://example.com/blog?page=3" />
전체 글을 한 화면에 담은 “모두 보기” 페이지가 실제로 있다면 그쪽을 대표로 지정하는 선택지도 있습니다. 없는데 지어내지는 마세요.
리디렉션·hreflang과의 관계
301 리디렉션은 canonical보다 강한 신호입니다. 주소를 영구적으로 옮겼다면 리디렉션이 정답이고, 두 주소가 모두 접근 가능해야 하는 상황에서만 canonical을 씁니다. 리디렉션이 여러 단계로 이어지면 신호가 희석되므로 한 번에 최종 주소로 보내세요. 애드브랜치는 redirect-chain-length와 final-url-consistency로 이 부분을 확인합니다.
hreflang은 언어·지역별 대체 페이지를 연결하는 표시입니다. 각 언어 버전은 자기 자신을 canonical로 지정한 뒤 hreflang으로 서로를 참조해야 합니다. 한국어 페이지의 canonical을 영어 페이지로 지정하면 hreflang 관계가 깨집니다.
<!-- 한국어 페이지 -->
<link rel="canonical" href="https://example.com/ko/product/42" />
<link rel="alternate" hreflang="ko" href="https://example.com/ko/product/42" />
<link rel="alternate" hreflang="en" href="https://example.com/en/product/42" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/product/42" />
적용 시 주의점
- 한 페이지에 canonical 태그가 두 개 이상 있으면 검색엔진이 모두 무시할 수 있습니다. CMS 플러그인과 테마가 각각 출력하는 경우가 흔하니 실제 소스를 확인하세요.
- canonical과
noindex를 함께 쓰지 마세요. “이 페이지를 색인하지 말고, 동시에 다른 페이지의 대표로 취급하라”는 모순된 신호입니다. - canonical 대상은 200 응답을 주는 페이지여야 합니다. 404나 리디렉션되는 주소를 가리키면 무시됩니다.
<head>밖, 예를 들어<body>안에 있는 canonical은 처리되지 않습니다. JavaScript로 나중에 삽입하는 방식도 초기 HTML만 읽는 도구에는 잡히지 않습니다.
자주 묻는 질문
canonical을 지정하면 반드시 그 URL이 검색결과에 나오나요
아닙니다. canonical은 힌트이고 검색엔진은 내부 링크, 사이트맵, 리디렉션, hreflang 등 다른 신호와 함께 판단합니다. Search Console의 URL 검사 도구에서 “사용자 선언 표준”과 “Google 선택 표준”이 다르게 표시되는 경우가 있는데, 두 값이 계속 다르다면 다른 신호가 충돌하고 있다는 뜻입니다.
페이지에 canonical이 없으면 감점인가요
내용이 유일하고 URL 변형이 없다면 없어도 치명적이지 않습니다. 다만 파라미터가 붙은 주소로 유입될 가능성은 거의 모든 사이트에 있으므로 자기참조 canonical을 기본값으로 두는 편이 안전합니다.
다른 도메인의 페이지를 canonical로 지정할 수 있나요
가능합니다. 콘텐츠를 다른 매체에 제공(신디케이션)할 때 원문 도메인을 가리키는 크로스 도메인 canonical을 씁니다. 다만 상대 사이트가 그 태그를 넣어 줘야 하므로 배포 전에 합의가 필요합니다.
canonical과 301 리디렉션 중 무엇을 써야 하나요
사용자가 옛 주소에 접근할 필요가 없다면 301 리디렉션을 쓰세요. 두 주소가 모두 살아 있어야 하는 경우, 예를 들어 필터가 적용된 목록이나 추적 파라미터가 붙은 주소라면 canonical이 맞습니다.
관련 가이드
Next reading
관련 가이드
sitemap.xml 만들기와 제출하기
사이트맵의 XML 형식과 URL 개수·용량 제한, sitemap index 분할, robots.txt 선언, Search Console 제출, lastmod의 올바른 사용법을 정리합니다.
가이드 읽기
SEO 기본 점검 체크리스트
페이지 하나를 검색엔진에 제대로 노출하기 위해 확인할 항목을 우선순위 순서로 정리하고, 항목마다 확인 방법과 고치는 코드까지 함께 다룹니다.
가이드 읽기
title과 meta description 작성법
검색 결과에 표시되는 제목과 설명을 길이, 중복, 키워드 배치 관점에서 바르게 작성하는 방법과 검색엔진이 문구를 다시 쓰는 경우를 설명합니다.
가이드 읽기
Check the evidence
이 페이지를 지금 검사해보기
읽고 있는 페이지나 운영 중인 URL을 넣으면 이 가이드와 연결된 SEO·GEO 항목을 바로 확인할 수 있습니다.