본문 바로가기
MAKESITE
무료 스캔 문의하기 로그인

점검 항목 · 검색 노출

canonical 미지정

한 페이지가 몇 개의 주소로 열리는지 세어 보신 적이 있습니까. 대부분의 사이트에서 답은 넷 이상입니다.

심각도 보통 검색 노출 무료 스캔 판정 항목 /check/canonical

01DEFINITION

한 줄로 말하면

같은 내용이 슬래시 있는 주소, 없는 주소, 광고 파라미터가 붙은 주소로 각각 열리면 검색엔진에게는 서로 다른 페이지 셋입니다. 평가가 세 갈래로 나뉘어 어느 쪽도 위로 올라가지 못합니다. canonical 은 "정본은 이 주소다"를 한 줄로 선언해 흩어진 점수를 한곳에 모으는 장치입니다. 유입 파라미터를 많이 쓰는 사이트일수록 효과가 큽니다.

02RISK

없으면 무슨 일이 생기나

같은 상품 페이지가 슬래시가 붙은 주소, 안 붙은 주소, www 가 붙은 주소, 광고에서 넘어온 파라미터가 달린 주소로 각각 열린다고 해 봅시다. 검색엔진에게는 내용이 똑같은 페이지 넷입니다. 이 페이지가 받는 평가는 넷으로 나뉘고, 각각은 하나로 모였을 때보다 낮은 자리에 놓입니다. 어느 하나도 위로 올라가지 못합니다.

검색엔진이 알아서 대표를 고르기도 하지만, 그 선택이 우리 뜻과 다를 수 있습니다. 광고 파라미터가 붙은 주소가 대표로 뽑히면 검색 결과에 그 지저분한 주소가 노출되고, 나중에 광고를 접어 그 파라미터를 없애면 대표 주소가 사라집니다.

크롤링 예산도 소모됩니다. 페이지 하나를 네 번 읽는 데 시간을 쓰면 그만큼 새로 올린 페이지가 늦게 발견됩니다. 상품이 수천 개인 쇼핑몰에서는 이 차이가 실제 수치로 나타납니다.

03CHECK IT YOURSELF

직접 확인하는 방법

아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.

  1. 01
    태그가 있는지 그리고 무엇을 가리키는지 본다

    있는지보다 무엇을 가리키는지가 중요합니다. 모든 페이지가 홈을 가리키고 있는 사고가 실제로 자주 납니다.

    $ curl -s https://example.com/products/kv-200 | grep -i canonical
    <link rel="canonical" href="https://example.com/products/kv-200">
  2. 02
    한 페이지가 몇 개의 주소로 열리는지 세어 본다

    이 항목의 진짜 확인법입니다. 아래 변형을 전부 요청해 200 이 나오는 것이 몇 개인지 보십시오. 둘 이상이면 canonical 이 필요합니다.

    $ for u in \
        "https://example.com/products/kv-200" \
        "https://example.com/products/kv-200/" \
        "https://www.example.com/products/kv-200" \
        "https://example.com/products/kv-200?utm_source=ad"; do
        printf "%s %s\n" "$(curl -s -o /dev/null -w '%{http_code}' "$u")" "$u"
      done
  3. 03
    여러 페이지의 canonical 을 나란히 본다

    전부 같은 주소를 가리키고 있으면 템플릿에 값을 고정으로 박아 둔 것입니다. 이 상태는 없는 것보다 훨씬 나쁩니다.

    $ for u in / /about /products; do
        curl -s https://example.com$u | grep -oP '(?<=rel="canonical" href=")[^"]+'
      done
  4. 04
    서치 콘솔에서 구글의 판단을 확인한다

    URL 검사 도구는 우리가 선언한 canonical 과 구글이 실제로 고른 대표 주소를 나란히 보여 줍니다. 두 값이 다르면 우리 선언이 무시되고 있다는 뜻입니다.

04HOW TO FIX

고치는 방법

서버 환경에 따라 적을 자리가 다릅니다. 아래는 가장 흔한 구성 기준이고, 적용 전에 현재 설정을 백업하십시오.

페이지마다 자기 주소를 절대주소로 선언한다

상대주소로 적어도 동작하지만 절대주소가 안전합니다. 프로토콜과 도메인까지 포함해 어느 주소로 들어와도 같은 값이 나오게 하십시오.

<link rel="canonical" href="https://example.com/products/kv-200">
현재 주소를 그대로 쓰지 않는다

가장 흔한 실수입니다. 요청받은 주소를 그대로 canonical 에 넣으면 파라미터가 붙은 주소가 자기 자신을 정본이라고 선언하게 되어 아무 효과가 없습니다. 페이지의 정해진 주소를 만들어 쓰십시오.

// 이렇게 하면 안 된다 — 파라미터가 그대로 따라온다
$canonical = 'https://example.com' . $_SERVER['REQUEST_URI'];

// 이렇게 한다 — 이 페이지의 정본 주소를 규칙으로 만든다
$canonical = 'https://example.com/products/' . rawurlencode($code);
주소 형태 자체를 하나로 통일한다

canonical 은 검색엔진에 대한 신호일 뿐이고 강제는 아닙니다. 근본 조치는 리다이렉트로 주소를 하나로 모으는 것입니다. www 유무와 슬래시 유무를 서버에서 정리하면 canonical 이 할 일이 줄어듭니다.

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
목록 페이지의 페이지 번호는 각자 두 것으로 남긴다

2페이지, 3페이지가 전부 1페이지를 canonical 로 가리키면 그 페이지들의 내용은 색인되지 않습니다. 목록의 뒷장에만 있는 상품이 검색에서 사라집니다. 각 페이지가 자기 자신을 가리키게 두십시오.

주의. canonical 을 잘못 걸면 없는 것보다 나쁩니다. 전 페이지가 홈을 가리키도록 템플릿에 고정값을 박아 두면 사이트의 다른 모든 페이지가 색인에서 빠질 수 있습니다. 적용 후에는 반드시 여러 페이지를 나란히 확인하십시오.

05FAQ

자주 묻는 질문

canonical 을 걸면 다른 주소는 검색에서 사라지나요

사라지는 것이 아니라 하나로 합쳐집니다. 검색엔진이 여러 주소를 같은 페이지로 보고 정본 주소 하나로 평가를 모읍니다. 다른 주소로 들어온 방문자는 그대로 페이지를 볼 수 있고, 접속이 막히거나 하지 않습니다.

리다이렉트와 canonical 중 무엇을 써야 하나요

주소를 하나로 모을 수 있으면 리다이렉트가 낫습니다. 더 명확하고 검색엔진이 확실하게 따릅니다. canonical 은 두 주소가 모두 살아 있어야 하는 경우, 예컨대 광고 파라미터가 붙은 주소나 인쇄용 페이지에 씁니다.

utm 파라미터가 붙은 주소도 canonical 로 정리되나요

정리됩니다. 그리고 이것이 canonical 이 가장 많이 쓰이는 자리입니다. 광고와 메일 발송에서 붙는 파라미터는 종류가 계속 늘어나기 때문에 리다이렉트로 일일이 막기보다 canonical 로 정본을 선언하는 편이 관리하기 쉽습니다.

canonical 을 선언했는데 구글이 다른 주소를 골랐습니다

canonical 은 지시가 아니라 신호라서 검색엔진이 다른 판단을 할 수 있습니다. 대개 우리 선언과 실제 상태가 어긋날 때 그렇습니다. 내부 링크가 다른 주소를 가리키고 있거나, 사이트맵에 다른 주소가 실려 있거나, 리다이렉트 방향이 반대인 경우를 확인하십시오.
여기까지는 항목 일반론입니다. 무엇이고 왜 문제이며 어떻게 고치는지는 감출 이유가 없어 그대로 적었습니다. 리포트에 들어가는 것은 귀사 사이트에서 실제로 어떤 값이 나왔는지 — 어느 주소의 어느 응답인지, 그 환경에서 어떤 순서로 적용해야 하는지, 예상 공수가 얼마인지입니다. 이 페이지만 보고 직접 고치셔도 되고, 실제로 그러시라고 적어 두었습니다.

GET STARTED

내 사이트는
이 항목을 통과할까요

주소만 넣으시면 이 항목을 포함해 25가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.