같은 상품·게시글이 ?page=1, ?ref=naver, www·비www 등 여러 URL로 접속 가능하다면 검색엔진은 이를 중복 문서로 인식해 순위 신호를 여러 URL에 나눠 분산시킵니다. 캐노니컬(Canonical) 태그로 대표 URL을 명시하는 방법과 실무에서 자주 놓치는 케이스를 정리합니다.
캐노니컬 태그가 해결하는 문제
캐노니컬 태그는 <link rel="canonical" href="대표URL"> 형태로 이 콘텐츠의 정식 주소는 여기라고 검색엔진에 알려주는 신호입니다. 여러 URL로 같은 콘텐츠가 노출돼도 검색엔진이 대표 URL 하나로 신호를 모아, 중복으로 인한 순위 분산·품질 판단 저하를 막을 수 있습니다.
중복 URL이 생기는 대표적인 경우
- 대소문자·슬래시 유무 차이:
/pagevs/Page/ - 추적 파라미터:
?utm_source=,?ref= - 페이지네이션:
?page=1과?page=없는 기본 목록 - 세션 ID가 URL에 노출되는 구조
- www와 non-www가 둘 다 접속되는 경우
- 모바일 전용 서브도메인(m.example.com)과 반응형 페이지가 공존하는 경우
캐노니컬 태그 작성 규칙
<link rel="canonical" href="https://example.com/board/view.php?id=123">
규칙은 다음과 같습니다.
- 항상 절대경로(전체 URL)로 작성
- 프로토콜(https)과 www 여부까지 대표 URL과 정확히 일치
- 추적 파라미터는 제거한 깨끗한 URL을 canonical로 지정
- 페이지 자기 자신을 가리키는 self-canonical도 기본적으로 넣어두는 것이 안전
페이지네이션·필터 목록 페이지 처리
게시판 목록이나 상품 목록의 페이지네이션은 실무에서 가장 자주 실수가 나오는 영역입니다.
| 상황 | 권장 처리 |
|---|---|
| ?page=2, ?page=3 등 페이지네이션 | 각 페이지는 자기 자신을 canonical로 지정 (1페이지로 몰지 않음) |
| 정렬 옵션(가격순, 최신순) | 대표 정렬 URL을 canonical로, 나머지는 그쪽으로 지정 가능 |
| 필터 조합(색상, 사이즈 등) | 조합이 많으면 필터 없는 기본 목록으로 canonical, 또는 noindex 고려 |
페이지네이션 2페이지 이상을 무조건 1페이지로 canonical 처리하면 2페이지 이후의 콘텐츠가 검색에서 완전히 배제될 수 있어 주의가 필요합니다.
canonical과 301 리다이렉트의 차이
둘 다 "대표 URL은 이것"이라는 신호를 주지만 동작 방식이 다릅니다.
- 301 리다이렉트: 방문자를 실제로 다른 URL로 이동시킴. 사용자가 원래 URL을 볼 수 없음
- canonical 태그: 방문자는 원래 URL을 그대로 볼 수 있고, 검색엔진에게만 "대표는 다른 곳"이라고 알림
완전히 필요 없는 옛 URL은 301로 이동시키고, 둘 다 사용자에게 보여줄 필요가 있는 유사 콘텐츠는 canonical로 처리하는 것이 원칙입니다.
동적 페이지에서 canonical을 프로그래밍하는 예시
<?php $base_url = "https://example.com" . strtok($_SERVER['REQUEST_URI'], '?'); ?> <link rel="canonical" href="<?php echo htmlspecialchars($base_url); ?>">
위 방식은 추적 파라미터를 제거한 깨끗한 URL을 자동으로 canonical에 넣어주는 가장 단순한 구조입니다. 다만 페이지 번호처럼 콘텐츠 자체가 달라지는 파라미터는 제거하면 안 되므로 화이트리스트 방식으로 관리하는 것이 안전합니다.
검증 방법
- 서치 콘솔 URL 검사에서 "Google이 선택한 표준" vs "사용자가 지정한 표준"이 다른지 확인
- 다른 걸로 나온다면 canonical 지정이 잘못됐거나 콘텐츠가 실제로 충분히 다른 것
- 중복이 의심되는 URL 그룹을 모아 직접 본문 유사도를 비교
SNS·검색 유입 파라미터를 canonical에서 안전하게 제거하는 원칙
마케팅 캠페인에서 흔히 붙이는 ?utm_source, ?fbclid, ?gclid 같은 파라미터는 콘텐츠 자체를 바꾸지 않으므로 canonical에서 항상 제거 대상입니다. 반대로 ?id=123처럼 실제로 다른 게시글을 가리키는 파라미터는 절대 제거하면 안 됩니다.
서버 로직에서는 "콘텐츠를 바꾸는 파라미터"와 "단순 추적용 파라미터"를 화이트리스트로 구분해 관리하면, 새로운 마케팅 파라미터가 추가돼도 canonical 로직을 매번 수정할 필요가 없습니다.
실무 정리
캐노니컬 태그는 URL이 여러 형태로 접속 가능한 순간부터 필수인 설정입니다. 색인 문제로 이어지는 경우가 많아 색인 생성 누락 오류와 함께 점검하는 것을 권장합니다. URL 구조·canonical 설계가 필요하면 무료 견적요청으로 현재 URL 규칙을 알려주세요.
자주 묻는 질문 (FAQ)
canonical을 지정하면 다른 URL은 검색에서 완전히 사라지나요? +
사라지는 것은 아니고, 검색엔진이 순위 신호를 대표 URL로 모으는 참고용 신호입니다. 콘텐츠가 크게 다르다고 판단하면 검색엔진이 canonical 지정을 무시하고 별도로 색인할 수도 있습니다.
모든 페이지에 canonical을 꼭 넣어야 하나요? +
필수는 아니지만, 자기 자신을 가리키는 self-canonical을 기본으로 넣어두면 추적 파라미터가 붙은 변형 URL이 생겨도 안전망 역할을 해 실무에서는 기본 세팅으로 권장됩니다.
www와 non-www 중 어느 쪽을 대표로 정해야 하나요? +
정답은 없습니다. 다만 한 번 정하면 canonical, 301 리다이렉트, 서치 콘솔 등록을 모두 그 기준으로 일관되게 맞춰야 합니다.
canonical 태그와 robots.txt 차단을 같이 쓰면 안 되나요? +
canonical로 지정한 URL을 robots.txt로 차단하면 크롤러가 그 페이지에 접근조차 못 해 canonical 신호 자체를 읽을 수 없게 됩니다. 두 설정이 서로 충돌하지 않는지 확인이 필요합니다.
모바일 서브도메인과 PC 사이트가 따로 있는 경우도 canonical이 필요한가요? +
네, 모바일 페이지에서는 PC 대응 URL을 canonical로, PC 페이지에서는 모바일 대응 URL을 alternate로 지정하는 상호 참조 구조가 표준적으로 권장됩니다.
canonical 태그가 여러 개 들어가면 어떻게 되나요? +
검색엔진은 대부분 첫 번째 canonical 태그만 인식하거나, 여러 개가 있으면 신호 자체를 무시할 수 있습니다. 페이지당 canonical 태그는 반드시 하나만 있어야 합니다.