목록 페이지에 정렬과 필터를 붙이면 주소 끝에 ?sort=new 같은 것이 붙습니다. 화면상으로는 같은 페이지의 다른 모습이지만, 검색엔진에게는 주소가 다르면 다른 페이지입니다. 옵션이 몇 개만 조합돼도 거의 같은 내용의 주소가 수십, 수백 개가 됩니다.
이 문제가 고약한 이유는 화면에 아무 증상이 없다는 데 있습니다. 사이트는 정상 동작하고, 사용자는 불편이 없으며, 오류 로그에도 아무것도 남지 않습니다. 검색 쪽에서만 조용히 진행됩니다.
같은 페이지의 여러 얼굴
여기서 두 가지 손해가 생깁니다. 첫째, 검색엔진이 우리 사이트를 도는 시간과 요청이 사본에 나눠 쓰입니다. 정작 새로 올린 중요한 페이지는 뒤로 밀립니다. 둘째, 여러 사본 중 어느 것이 검색 결과에 설지 우리가 정하지 못합니다 — 정렬 파라미터가 붙은 주소가 대표로 뽑혀 검색 결과에 나가는 일이 실제로 일어납니다.
canonical — “이 주소로 세어 주세요”
canonical 태그는 페이지 안에 들어가는 한 줄로, “이 내용의 대표 주소는 여기입니다” 라고 알립니다. 사본 주소들이 전부 대표 주소를 가리키면, 검색엔진은 그 신호를 근거로 하나를 골라 색인합니다.
다만 이것은 명령이 아니라 강한 힌트입니다. 지정한 대표 주소와 실제 내용이 어긋나면 무시될 수 있습니다. 그래서 정확한 사용에는 조건이 따릅니다.
특히 페이지네이션은 자주 틀리는 자리입니다. 2페이지가 1페이지를 대표로 가리키게 만들면, 2페이지에만 있는 항목들이 검색엔진 입장에서 사라집니다. 목록의 각 페이지는 자기 자신을 대표로 두는 것이 기본입니다.
마케터가 할 수 있는 확인과 요청
워드프레스에서 SEO 플러그인 하나를 켜 두면 모든 페이지에 자기 자신을 가리키는 canonical 이 기본으로 들어갑니다. 그래서 이 문제는 대개 기본 구조가 아니라 나중에 붙인 기능에서 생깁니다 — 목록 필터, 검색 결과 화면, 캠페인 추적 파라미터가 붙은 공유 링크 같은 것들입니다.
확인은 두 곳에서 합니다. 서치콘솔의 페이지 리포트에서 “중복” 계열의 사유가 늘고 있는지 보고, site:도메인 검색으로 파라미터가 붙은 주소가 결과에 나오는지 봅니다. 하나라도 걸리면 요청은 이렇게 씁니다 — “이 파라미터가 붙은 주소들이 색인되고 있습니다. 전부 파라미터 없는 주소를 대표로 가리키게 해 주세요.” 대상 · 현상 · 원하는 상태가 한 문장에 들어 있어야 작업이 시작됩니다.
중복과 자기잠식을 콘텐츠 설계 쪽에서 다루는 글은 SEO 아카이브에 있고, 사본 주소 정리를 포함한 기술 점검은 최적화 지원 사업에서 함께 진행합니다.
다음 회차
주소가 정리됐다면 이번에는 페이지의 정체를 기계에게 설명할 차례입니다. 다음 회차는 구조화 데이터인데, 핵심은 우리가 실제로 무엇인지를 고르는 일입니다.