본문으로 건너뛰기
읽기 시간: 10분

최종 업데이트: 2026년 6월 6일

중복 콘텐츠와 canonical — 검색 점수가 새는 것 막기

중복 콘텐츠란 같은 내용이 여러 URL로 존재해 검색 신호가 분산되는 문제입니다. www/non-www, 파라미터 URL, 모바일·PC 분리까지 — canonical 태그로 새는 검색 점수를 막는 법을 실전 경험으로 정리했습니다.

쇼핑몰 하나를 맡았을 때 일입니다. 트래픽은 분명 들어오는데, 같은 상품 페이지가 검색 결과에 세 번씩 나왔어요. 정렬을 바꿀 때마다, 색상 필터를 누를 때마다 주소 뒤에 ?sort=, ?color=가 붙으면서 URL이 계속 늘어난 겁니다. 구글은 그 주소들을 전부 "다른 페이지"로 봤고요.

문제는 순위였습니다. 같은 상품에 대한 검색 점수가 대여섯 개 주소로 쪼개지니, 정작 대표가 되어야 할 페이지가 경쟁사에 밀렸습니다. 콘텐츠가 부족했던 게 아니라, 점수가 줄줄 새고 있었던 거죠.

"중복 콘텐츠란 동일하거나 매우 유사한 내용이 둘 이상의 URL로 존재해, 검색엔진이 어느 페이지를 대표로 삼을지 혼란스러워하고 검색 신호가 분산되는 상태다." — 야무진SEO

먼저 짚고 갈 게 있습니다. 중복 콘텐츠는 대부분의 경우 "패널티"가 아닙니다. 구글이 벌점을 주는 게 아니라, 여러분이 받아야 할 점수를 여러 주소가 나눠 가지는 손실입니다. 이 차이를 알아야 해결 방법도 정확히 고를 수 있습니다.

중복 콘텐츠는 왜 자꾸 생길까

중복 콘텐츠는 베껴 쓴 글에서만 생기는 게 아닙니다. 멀쩡하게 운영하는 사이트도 구조 때문에 저절로 생깁니다. 제가 30개 사이트를 직접 만들고 운영하면서 가장 자주 마주친 원인은 이 네 가지였어요.

첫째, 주소 버전이 통일 안 된 경우. http://https://, www가 붙은 주소와 안 붙은 주소가 모두 열린다면, 한 페이지가 최대 네 개의 다른 주소를 갖게 됩니다.

둘째, URL 파라미터. 정렬·필터·페이지네이션·세션 ID가 주소 뒤에 붙으면 내용은 같은데 주소만 달라집니다. 쇼핑몰에서 압도적으로 많이 터지는 케이스입니다.

셋째, 같은 글이 여러 카테고리에 걸린 경우. 블로그 글 하나를 '기술'과 '마케팅' 두 카테고리에 올리면 /tech/article/marketing/article 두 주소가 생깁니다.

넷째, PC와 모바일 주소 분리. wwwm. 도메인을 따로 쓰면 같은 콘텐츠가 두 곳에 존재하게 됩니다.

쇼핑몰 한 상품이 주소 여섯 개로 쪼개지는 과정

앞서 말한 쇼핑몰 사례를 주소 단위로 풀어보면 문제가 더 선명해집니다. '베이직 반팔티' 한 상품의 원래 주소는 이렇게 깔끔했어요.

https://shop.example.com/products/basic-tee

그런데 손님이 사이트를 둘러보는 동안 주소가 이렇게 불어났습니다.

/products/basic-tee?color=black      ← 색상 필터
/products/basic-tee?color=black&size=L  ← 색상+사이즈
/products/basic-tee?sort=price_asc   ← 가격순 정렬
/products/basic-tee?ref=main_banner  ← 메인 배너에서 유입
/products/basic-tee?utm_source=insta ← 인스타 광고 링크

내용물은 똑같은 반팔티 한 장인데, 주소만 여섯 개가 됐습니다. 구글 입장에서는 여섯 개의 다른 페이지로 보이고, 어떤 게 진짜 대표인지 알 길이 없었죠. 색인 보고서를 열어보니 같은 상품이 '중복, 제출된 표준 페이지 없음' 상태로 줄줄이 잡혀 있었습니다. 검색 점수가 한 곳에 모이지 못하고 여섯 갈래로 흩어진 전형적인 모습이었습니다.

해결은 의외로 단순했습니다. 어떤 파라미터가 붙든 모든 상품 페이지가 깨끗한 원래 주소(/products/basic-tee)를 canonical로 가리키도록 템플릿을 고쳤습니다. 그러자 흩어졌던 신호가 한 주소로 모이기 시작했고, 몇 주 뒤 대표 페이지가 검색 결과에서 제자리를 찾았습니다.

canonical 태그 — 대표 주소를 손가락으로 가리키기

canonical(캐노니컬) 태그는 <head> 안에 넣는 한 줄짜리 신호입니다. "여러 주소가 같은 내용이지만, 이 주소를 원본으로 취급해 주세요"라고 검색엔진에 알려주는 역할이죠.

<link rel="canonical" href="https://www.example.com/product" />

이 한 줄이 하는 일은 명확합니다. 흩어진 검색 신호(링크 가치, 클릭, 색인 우선순위)를 지정한 대표 주소 하나로 모아줍니다. TBWA 데이터랩의 설명을 빌리면, canonical 태그는 "검색엔진에게 어떤 페이지를 우선적으로 크롤링하고 색인해야 할지 알려주는 역할"을 합니다(출처: TBWA코리아 데이터랩 SEO 블로그).

여기서 많은 분이 놓치는 핵심이 하나 있습니다. canonical은 강제가 아니라 권고입니다. robots.txt가 그렇듯, 구글은 이 신호를 "참고"하지만 절대적으로 따르지는 않아요. 콘텐츠가 실제로 너무 다르거나 신호가 모순되면 구글이 무시할 수도 있습니다. 그래서 canonical을 걸었다고 끝이 아니라, 신호를 일관되게 맞춰주는 게 중요합니다.

301 리디렉션과 어떻게 다른가 — 가장 헷갈리는 지점

상담하다 보면 "그냥 301 리디렉션 걸면 안 되나요?"라는 질문을 정말 많이 받습니다. 둘 다 중복 문제를 풀지만, 쓰임이 완전히 다릅니다.

구분301 리디렉션canonical 태그
사용자 경험즉시 다른 주소로 이동이동 없이 현재 페이지 그대로
적용 대상사용자 + 검색엔진검색엔진만
강제력강제 (브라우저가 전환)권고 (구글이 참고)
쓰는 상황페이지를 더 안 쓸 때, 도메인 이전, http→https두 주소를 모두 살려둬야 할 때

핵심은 이겁니다. 그 주소를 앞으로 쓸 건가, 안 쓸 건가.

도메인을 바꿨거나 페이지를 폐기한다면 301 리디렉션이 맞습니다. 사용자도, 검색엔진도 한 곳으로 완전히 보내는 거죠. 반대로 정렬·필터 주소처럼 사용자에게는 그 페이지가 계속 필요한데 검색엔진에만 "대표는 따로 있다"고 알리고 싶을 때는 canonical입니다. 정렬 페이지를 301로 강제 이동시키면 사용자가 정렬 기능을 못 쓰게 되니까요.

"둘 중 무엇을 쓸지 헷갈릴 땐 한 문장만 물어보세요. '이 주소를 사용자가 계속 봐야 하나?' 그렇다면 canonical, 아니라면 301이다." — 야무진SEO

실전에서 가장 많이 터지는 canonical 실수 4가지

태그 자체는 한 줄이라 쉽지만, 잘못 걸면 오히려 멀쩡한 페이지를 색인에서 날려버립니다. 제가 다른 사이트를 진단하면서 반복해서 본 실수들입니다.

1. 상대 경로로 쓴 경우. href="/product"처럼 도메인을 뺀 채 쓰면 검색엔진이 엉뚱하게 해석할 수 있습니다. 반드시 https://부터 시작하는 절대 경로로 씁니다. 엑셀리언트도 "canonical에는 항상 절대 경로를 사용해야 한다"고 강조합니다(출처: 엑셀리언트 SEO 가이드).

2. canonical과 noindex를 같이 건 경우. noindex는 "이 페이지 색인하지 마"이고 canonical은 "이 페이지를 대표로 봐"입니다. 정반대 신호라 검색엔진이 둘 다 무시하거나 의도와 다르게 처리합니다. 한 페이지에 같이 쓰면 안 됩니다.

3. 한 페이지에 canonical을 두 개 이상 넣은 경우. 플러그인과 테마가 각각 canonical을 자동 삽입하면서 중첩되는 경우가 흔합니다. 중복되면 구글은 둘 다 무시합니다. <head>에 정말 하나만 있는지 확인하세요.

4. 자기참조 canonical을 빠뜨린 경우. 의외로 이게 가장 효과 좋은데도 잊는 분이 많습니다. 중복이 없는 평범한 페이지라도 자기 자신을 가리키는 canonical을 넣어두면, 누군가 파라미터를 붙여 그 페이지를 퍼가도 대표 주소가 흔들리지 않습니다.

<!-- https://www.example.com/about 페이지에 -->
<link rel="canonical" href="https://www.example.com/about" />

실제로 본 가장 아찔한 사례 — 전 페이지가 첫 화면을 가리킨 경우

진단을 갔던 한 회사 사이트는 모든 페이지의 canonical이 전부 첫 화면(/)을 가리키고 있었습니다. 개발자가 공통 헤더 템플릿에 canonical 한 줄을 박아 넣으면서, 페이지마다 주소가 바뀌도록 처리하지 않고 메인 주소를 그대로 하드코딩한 거였어요.

<!-- /services, /blog, /contact 등 모든 페이지의 head에 똑같이 -->
<link rel="canonical" href="https://www.example.com/" />

결과는 참담했습니다. 구글은 "이 사이트의 진짜 페이지는 첫 화면 하나뿐이구나"라고 받아들였고, 서비스 소개·블로그 글이 줄줄이 색인에서 빠졌습니다. 자기참조 canonical을 깜빡한 정도가 아니라, 멀쩡한 페이지들을 스스로 색인에서 지워버린 셈이죠. 공통 템플릿으로 canonical을 넣을 때는 반드시 "지금 페이지의 실제 주소"가 동적으로 들어가도록 해야 합니다. 한 줄 실수가 사이트 전체를 날립니다.

사이트맵까지 신호를 맞춰야 진짜 끝난다

여기가 다른 글들이 잘 안 다루는 빈틈입니다. canonical만 걸고 끝내면 절반만 한 거예요. 사이트맵(sitemap.xml)에는 canonical로 지정한 대표 URL만 넣어야 합니다.

생각해보면 당연합니다. canonical로는 "대표는 A다"라고 해놓고, 사이트맵에는 중복 주소 B, C를 같이 넣으면 검색엔진에 모순된 신호를 보내는 셈이거든요. 리디렉션되거나(3xx) 오류 나거나(4xx, 5xx) canonical에 의해 다른 페이지로 지정된 URL은 사이트맵에서 빼야 합니다.

정리하면 중복 콘텐츠를 잡는 신호는 세 군데에서 한 방향을 가리켜야 합니다. canonical 태그, 사이트맵, 그리고 내부 링크. 같은 페이지를 링크할 때 어떤 곳은 www, 어떤 곳은 non-www로 걸면 그 자체가 흔들리는 신호입니다. 내부 링크도 대표 주소로 통일하세요. 이런 구조적인 정리는 기술 SEO 기초에서 다룬 토대 위에서 작동합니다.

특히 상품·게시물이 자동으로 늘어나는 사이트라면 손으로 일일이 canonical을 박을 수 없습니다. 템플릿 단계에서 대표 URL이 자동으로 들어가도록 설계해야 하는데, 이 부분은 DB 기반 동적 SEO에서 더 깊게 다뤘습니다. 그리고 애초에 파라미터가 덜 붙는 깔끔한 주소 체계를 만들면 중복 자체가 줄어듭니다 — URL 구조 설계 글을 함께 보시길 권합니다.

중복 콘텐츠 직접 점검하는 4단계

추측으로 "괜찮겠지" 하고 넘기면 안 됩니다. 제가 사이트를 받으면 가장 먼저 돌리는 점검 순서를 그대로 옮겨 둡니다. 도구 없이도 절반은 손으로 확인할 수 있습니다.

1단계 — 주소 버전부터 손으로 친다. 주소창에 http://, https://, www 유무를 조합해 직접 쳐 보세요. 네 가지 버전이 전부 같은 페이지를 열어 주는데 주소가 안 바뀐다면(한쪽으로 리디렉션되지 않는다면), 거기서부터 중복입니다. 정상이라면 모두 대표 주소 하나로 튕겨 나가야 합니다.

2단계 — site: 검색으로 색인 상태를 본다. 구글에서 site:내도메인.com을 검색하면 색인된 주소가 쭉 나옵니다. 같은 제목·내용의 페이지가 파라미터만 다른 채 여러 번 보인다면 신호가 새고 있다는 뜻입니다. 특정 상품만 의심되면 site:내도메인.com 상품명으로 좁혀 보세요.

3단계 — 페이지 소스에서 canonical을 직접 확인한다. 의심되는 페이지에서 소스 보기(또는 개발자 도구)를 열고 rel="canonical"을 찾습니다. 체크할 건 세 가지입니다. (1) <head> 안에 정말 하나만 있는가, (2) https://로 시작하는 절대 경로인가, (3) 그 주소가 지금 보고 있는 페이지의 대표로 합당한가. 앞서 본 사례처럼 모든 페이지가 첫 화면을 가리키고 있지는 않은지 꼭 보세요.

4단계 — 서치 콘솔 색인 보고서를 읽는다. 구글 서치 콘솔의 페이지 색인 보고서에는 '중복, 사용자가 표준으로 지정하지 않음', '중복, 제출된 표준 페이지 없음' 같은 항목이 그대로 뜹니다. 여기 잡힌 주소들이 바로 점수가 새는 지점입니다. 이 목록을 canonical·사이트맵 정리의 출발점으로 삼으면 됩니다.

자주 묻는 질문 (FAQ)

중복 콘텐츠가 있으면 구글에서 패널티를 받나요?

대부분의 경우 패널티는 아닙니다. 구글은 의도적인 복제·스팸이 아닌 한 벌점을 주지 않습니다. 다만 검색 신호가 여러 주소로 분산되어 순위 경쟁력이 떨어지는 손실이 발생합니다. "벌점"보다 "점수가 새는 것"으로 이해하는 편이 정확합니다.

canonical 태그를 걸면 무조건 그 주소가 대표가 되나요?

아닙니다. canonical은 강제가 아니라 권고입니다. 구글은 이 신호를 참고하되, 콘텐츠 차이·내부 링크·사이트맵 등 다른 신호와 함께 종합 판단합니다. 신호들이 모순되면 구글이 canonical을 무시할 수 있으므로, 사이트맵·내부 링크까지 한 방향으로 맞춰야 합니다.

301 리디렉션과 canonical 중 무엇을 써야 하나요?

그 주소를 사용자가 계속 봐야 하는지로 판단하세요. 페이지를 폐기하거나 도메인을 이전하는 경우, http→https 전환은 301 리디렉션이 맞습니다. 정렬·필터처럼 사용자에게는 필요하지만 검색엔진에만 대표를 알리고 싶을 때는 canonical을 씁니다.

중복이 없는 평범한 페이지에도 canonical이 필요한가요?

넣는 것을 권합니다. 자기 자신을 가리키는 자기참조 canonical을 두면, 누군가 파라미터를 붙여 페이지를 복제해도 대표 주소가 흔들리지 않습니다. 예방 차원에서 가장 효율 좋은 설정입니다.

canonical을 걸었는데도 중복 주소가 검색에 나오는 이유는 뭔가요?

canonical이 권고라서 반영까지 시간이 걸리거나, 신호가 모순되어 구글이 무시한 경우가 많습니다. canonical과 noindex를 함께 걸었거나, 태그가 중첩됐거나, 사이트맵에 중복 URL이 남아 있는지 점검하세요. 신호를 일관되게 맞추면 대부분 정리됩니다.


중복 콘텐츠는 화려한 기술이 필요한 문제가 아닙니다. 대표 주소 하나를 정하고, canonical·사이트맵·내부 링크가 그 주소를 똑같이 가리키게 맞추는 것 — 이게 전부입니다. 다만 자동으로 페이지가 늘어나는 사이트일수록 이걸 손으로 맞추기 어려워서, 구조 단계에서 잡아야 합니다.

지금 바로 확인해볼 게 하나 있습니다. 여러분 사이트의 주소창에 http://, https://, www를 붙였다 뗐다 해보세요. 전부 같은 페이지가 열리는데 주소만 다르게 남는다면, 점수가 새고 있는 겁니다. 어디서 새는지 직접 찾기 어렵다면 무료 SEO 진단을 신청해보세요. 중복 URL과 canonical 설정 오류를 짚어 드립니다.

우리 사이트, 검색 점수가 새고 있지 않나요?

무료 SEO 진단으로 중복 URL과 canonical 설정 오류를 찾아드립니다.