canonical 태그 2개면 구글은 둘 다 무시한다
rel=canonical 태그를 넣었다고 SEO 작업이 끝났다고 생각하기 쉽지만, 실제로는 "몇 개나 있는지"가 "무엇을 가리키는지"만큼 중요합니다. 한 페이지 안에 canonical 태그가 두 개 이상 있으면 구글은 개발자가 무엇을 의도했는지 판단할 방법이 없어 canonical 신호 자체를 통째로 버립니다. 이 가이드는 왜 중복이 생기는지, 왜 구글이 "둘 다 무시"라는 극단적인 선택을 하는지, 그리고 이 문제를 어떻게 발견하는지를 정리합니다.
1. canonical은 "선언"이지 "투표"가 아니다
많은 사람이 canonical 태그를 여러 개 넣으면 구글이 "그중 하나를 골라주겠지"라고 기대합니다. 하지만 canonical의 설계 철학은 애초에 다수결이 아닙니다. canonical은 페이지 소유자가 "이 URL이 정규 버전이다"라고 명시적으로 한 번 선언하는 신호입니다. 같은 페이지에서 서로 다른(혹은 같은) URL을 가리키는 canonical이 두 개 나오면, 그건 선언이 아니라 모순입니다. 구글 공식 가이드라인은 이런 모순 상황에서 신뢰도가 무너진 신호를 신뢰하지 않고, 대신 자체 알고리즘으로 원본 URL을 추정하는 쪽을 택한다고 명시합니다. 즉 개발자가 애써 지정한 canonical URL이 완전히 무시되고, 구글이 자기 기준으로 고른 다른 URL이 정규 버전으로 채택될 수 있습니다.
2. 중복은 왜 생기는가: 흔한 세 가지 원인
단일 파일로 직접 짠 HTML에서는 canonical 중복이 드물지만, CMS나 프레임워크를 쓰는 순간 흔해집니다.
- SEO 플러그인 + 테마 코드 충돌: 워드프레스의 Yoast SEO 같은 플러그인이 canonical을 자동 삽입하는데, 테마 자체에도 <head>에 canonical을 하드코딩해둔 경우 두 개가 동시에 출력됩니다.
- 서버 사이드 렌더링 + 클라이언트 사이드 삽입 중복: 서버에서 이미 canonical을 렌더링했는데, 프런트엔드 JS(React Helmet 등)가 페이지 로드 후 또 하나를 동적으로 추가하는 경우입니다.
- AMP·모바일 별도 페이지 연동 실수: AMP 버전과 일반 버전을 연결하면서 canonical과 amphtml 링크 관계를 잘못 배선해 같은 태그가 중복 출력되는 경우도 있습니다.
세 경우 모두 개발자가 "코드 한 곳"만 보고는 문제를 알아채기 어렵습니다. 실제 브라우저가 렌더링한 최종 HTML(view-source 또는 검사 도구의 Elements 탭)을 봐야만 중복이 드러납니다.
3. 실제 검사 예시: 태그 개수에 따른 결과
<link rel="canonical" href="https://example.com/page"><link rel="canonical" href="https://example.com/page?utm_source=x">둘 다 같은 페이지를 가리키는 것처럼 보여도, 구글 입장에서는 "이 페이지의 정규 URL이 두 가지로 선언됨"이라는 모순 신호일 뿐입니다. 결과적으로 구글은 두 태그를 모두 무시하고, 페이지의 링크 구조·내부 이동 경로 등을 참고해 자체적으로 정규 URL을 추정합니다.
| canonical 태그 개수 | 구글의 처리 |
|---|---|
| 0개 | canonical 신호 없음 → 구글이 처음부터 자체 추정 |
| 1개 | 정상 — 명시된 URL을 신호로 채택(단, 다른 신호와 상충 시 무시될 수도 있음) |
| 2개 이상 | 모순으로 판단 → 전부 무시, 0개인 것과 사실상 동일한 결과 |
즉 태그를 2개 넣는 것은 "안전장치를 이중으로 건다"가 아니라 "아예 안 건 것과 같은 결과"를 만드는 실수입니다. 자기 페이지에 이 문제가 있는지는 Canonical 태그 검사기로 URL을 넣거나 HTML 소스를 붙여넣어 바로 확인할 수 있습니다 — 이 도구는 태그 개수를 세어 2개 이상이면 별도 경고 항목으로 표시합니다.
4. 발견 후 조치: 어디를 먼저 고쳐야 하나
중복이 확인되면 순서대로 다음을 점검하세요.
- 페이지 소스에서 <link rel="canonical">를 검색해 몇 곳(테마 템플릿, SEO 플러그인 설정, 커스텀 스크립트)에서 각각 출력되는지 소스 코드 레벨에서 추적합니다.
- SEO 플러그인이 있다면 플러그인 쪽 canonical 기능을 우선 사용하고, 테마 하드코딩분은 제거합니다. 반대로 테마가 더 정교하게 관리되고 있다면 플러그인 쪽 자동 삽입을 끕니다.
- 수정 후 반드시 실제 배포된 페이지에서 다시 canonical 태그 검사기로 재검증합니다 — 로컬 코드만 고치고 캐시된 배포본을 확인 안 해서 안 고쳐진 것으로 착각하는 경우가 흔합니다.
- 사이트 전체에 같은 CMS/테마 구조를 쓰고 있다면 한 페이지만 고치지 말고, sitemap 검사기로 sitemap에 등록된 URL들을 훑어 다른 페이지에도 같은 중복 패턴이 있는지 표본 점검하세요.
5. canonical 외에 함께 확인할 신호
canonical 하나만으로 정규 URL이 결정되지는 않습니다. 구글은 canonical과 함께 내부 링크 구조, 사이트맵에 등록된 URL, hreflang 신호, 리디렉션 이력 등을 종합적으로 봅니다. canonical을 정상화한 뒤에는 hreflang 태그가 canonical URL과 충돌하지 않는지, 리디렉션 체인이 정규 URL로 정확히 연결되는지도 함께 점검하는 것이 좋습니다.
자주 묻는 질문
Q. canonical 태그 2개가 완전히 같은 URL을 가리켜도 문제인가요?
네. 값이 동일해도 구글은 "태그가 두 개 존재한다"는 사실 자체를 모순 신호로 처리할 수 있습니다. 값이 같든 다르든 반드시 하나만 남기세요.
Q. JavaScript로 삽입된 canonical과 서버에서 렌더링된 canonical이 같이 있으면 어떻게 되나요?
렌더링된 최종 DOM 기준으로 2개로 카운트될 가능성이 높습니다. 서버·클라이언트 어느 한쪽만 canonical을 출력하도록 역할을 명확히 나누세요.
Q. 중복 canonical을 고치면 순위가 바로 회복되나요?
아니요. 수정 후 구글이 페이지를 재크롤링·재평가하는 데 시간이 걸립니다. 즉시 재인덱싱을 원한다면 Search Console에서 URL 검사 후 색인 생성을 요청하는 것이 도움이 됩니다.
Q. 상대 경로 canonical과 절대 경로 canonical을 각각 하나씩 넣으면 괜찮나요?
둘 다 canonical 태그이므로 개수는 2개로 집계되어 여전히 문제입니다. 상대/절대 여부와 무관하게 태그 자체는 반드시 1개만 유지해야 합니다.