같은(또는 거의 같은) 내용이 여러 URL로 존재하면 링크·클릭 같은 검색 신호가 분산됩니다. 각 페이지 head에 rel=canonical로 원본 URL을 지정하고, www·http/https·끝 슬래시를 한 형태로 통일하면 신호가 원본 한 곳으로 모여 색인과 순위가 안정됩니다.
요약
- 중복은 보통 ‘페널티’가 아니라 ‘신호 분산’ 문제다 — 핵심은 신호를 한 곳에 모으는 것.
- 파라미터(?sort=·?utm_)·www·http/https·끝 슬래시는 검색엔진에 서로 다른 URL이다.
- 각 페이지에 자기 자신을 가리키는
자기참조 canonical을 넣고, 변형은 원본을 가리키게 한다. - 외부 블로그에 신디케이션할 때는 사본의 canonical을 내 원문 URL로 지정한다.
“같은 글인데 왜 검색에 안 나오죠?” 의뢰받은 사이트를 열어보면 자주 보이는 그림이 있습니다. 제품 글 하나가 ?sort=price, ?utm_source=ad, www 버전, http 버전까지 합쳐 대여섯 개의 주소로 존재합니다. 내용은 똑같습니다. 그런데 검색엔진 입장에서는 “비슷한 페이지가 여섯 개” 보일 뿐이고, 외부에서 받은 링크와 클릭은 이 여섯 개로 쪼개집니다. 한 페이지가 받았어야 할 점수가 여섯으로 나뉘는 셈입니다.
중복이 정말 문제인가요?
오해부터 풀겠습니다. 대부분의 중복은 ‘벌점’이 아닙니다. 진짜 손해는 두 가지입니다. 첫째, 위처럼 신호가 흩어집니다. 둘째, 검색엔진이 어느 URL을 ‘대표(canonical)’로 색인할지 스스로 고르는데, 그 선택이 내가 원하는 깨끗한 URL이 아닐 수 있습니다. 추적 파라미터가 잔뜩 붙은 못생긴 주소가 검색결과에 노출될 수도 있다는 뜻입니다. 그래서 ‘내가 직접 대표를 지정’하는 게 안전합니다.
그럼 어떻게 한 곳으로 모으나요?
방법은 단순합니다. 각 페이지의 <head>에 “이 페이지의 대표 URL은 여기다”라고 한 줄 적어주면 됩니다. 아래 코드를 그대로 복사해 쓰세요.
canonical 태그 — 복사
각 페이지 head에 원본 URL을 지정.
<link rel="canonical" href="https://example.com/insights/my-post" /> <!-- 신디케이션(미디엄·블로그)에는 원문 URL을 canonical로 --> <!-- www/비www, http/https, 끝 슬래시(/) 통일 -->
파라미터가 붙은 주소는요?
정렬·필터·추적용 파라미터가 붙어도 내용이 같다면, 파라미터를 뗀 깨끗한 URL을 canonical로 지정합니다. 그러면 ?sort=price, ?utm_source=ad 같은 변형이 전부 같은 원본을 가리켜 신호가 한 곳에 모입니다. 핵심은 ‘변형들이 모두 같은 원본을 자백하게’ 만드는 것입니다.
www·http/https·끝 슬래시는 왜 통일하나요?
https://www.example.com/, https://example.com, http 버전, 끝에 슬래시가 있고 없고 — 사람 눈에는 같은 곳이지만 검색엔진에는 서로 다른 주소입니다. 한 가지 형태로 정하고 나머지는 301 리다이렉트로 모읍니다. 그리고 모든 페이지가 자기 자신을 가리키는 자기참조 canonical을 갖게 하면, 우연히 생긴 변형이 신호를 빼가지 못합니다.
외부 블로그에 같은 글을 또 올렸어요
미디엄이나 파트너 블로그에 글을 다시 게재(신디케이션)하는 건 노출에 좋습니다. 다만 그 사본이 내 원문보다 먼저 평가되면 손해죠. 이때는 사본의 canonical을 내 원문 URL로 지정합니다. 그러면 검색엔진은 “원본은 Findable 쪽”이라고 이해하고 내 페이지를 대표로 평가합니다. 게재처가 canonical 설정을 지원하는지 미리 확인하세요.
canonical만 넣으면 끝인가요?
아닙니다. canonical은 ‘명령’이 아니라 ‘강한 힌트’입니다. 검색엔진은 내부 링크·사이트맵·리다이렉트·콘텐츠 유사도까지 함께 봅니다. canonical은 원본을 가리키는데 내부 링크는 변형을, 사이트맵에는 또 다른 주소를 넣어두면 신호가 엇갈려 무시될 수 있습니다. 그래서 우리는 canonical·내부 링크·사이트맵·리다이렉트가 같은 한 URL을 가리키도록 일관되게 맞춥니다.
| 항목 | 중복 방치 | canonical 정리 |
|---|---|---|
| 신호(링크·클릭) | 여러 URL로 분산 | 원본 한 곳에 집중 |
| 색인 | 검색엔진이 대표를 임의 선택 | 원하는 원본이 대표로 색인 |
| 순위 | 흩어진 점수로 약함 | 모인 신호로 안정 |
그래서, 무엇부터 하면 되나요?
오늘 할 수 있는 세 가지입니다. ① 모든 페이지에 자기참조 canonical을 넣는다. ② www·http/https·끝 슬래시를 한 형태로 정하고 301로 통일한다. ③ 외부에 다시 올린 글이 있다면 사본의 canonical을 원문으로 돌린다. 이 셋만 맞춰도 흩어진 신호의 대부분이 제자리로 돌아옵니다. 사이트가 커서 어디부터 손대야 할지 모르겠다면, 무료 진단으로 중복 URL 지도를 먼저 그려드립니다.
맨 위에서 기본 canonical 한 줄을 보여드렸으니, 제가 실제로 다루는 세 상황별 canonical을 한데 모아 보여드리겠습니다.
<!-- ① 자기참조: 모든 페이지가 자기 원본을 가리킴 --> <link rel="canonical" href="https://example.com/insights/post"> <!-- ② 파라미터 변형(?sort=, ?utm_=)도 같은 원본을 가리킴 --> <!-- /post?sort=price 페이지의 head에: --> <link rel="canonical" href="https://example.com/insights/post"> <!-- ③ 외부 신디케이션 사본 → 내 원문을 가리킴 --> <!-- 미디엄/파트너 블로그 사본의 head에: --> <link rel="canonical" href="https://example.com/insights/post">
중복은 한 종류가 아니라서 처리 방법도 다릅니다. 제가 사이트 점검 때 쓰는 유형별 대응표입니다.
| 중복 유형 | 예시 | 대응 |
|---|---|---|
| 파라미터 변형 | ?sort=price · ?utm_source=ad | 깨끗한 URL로 canonical |
| www / 비-www | www.example.com · example.com | 한 형태로 301 통일 |
| http / https | http:// · https:// | https로 301 통일 |
| 끝 슬래시 | /post · /post/ | 한 형태 고정 + canonical |
| 외부 신디케이션 | 미디엄·파트너 블로그 재게재 | 사본 canonical → 내 원문 |
중복 콘텐츠가 있으면 페널티를 받나요?
rel=canonical은 무엇을 하나요?
파라미터가 붙은 URL은 어떻게 처리하나요?
다른 블로그에 같은 글을 신디케이션하면 어떻게 하나요?
www/비www, http/https, 끝 슬래시는 왜 통일해야 하나요?
사이트 이전과 301 리다이렉트
주소가 바뀌어도 신호를 잃지 않는 법.
구조화 데이터(스키마)
검색·AI가 페이지를 이해하게 만드는 신호.
SEO는 이렇게 합니다
기술·콘텐츠·신호를 잇는 일하는 방식.
이 글의 canonical 코드는 이 페이지에서 그대로 복사해 쓸 수 있는 실제 코드입니다. 색인·순위 변화는 검색엔진 알고리즘과 경쟁 상황에 따라 달라지며 특정 성과를 보장하지 않습니다. 날조된 사례·수치는 사용하지 않았습니다.