작성일: 2011년 5월 6일 금요일


안녕하세요, 오늘은 noindex에 관한 이야기를 해보려 합니다.

겨울이 막 시작되려는 어느날 한 웹마스터분께서 사무실에 찾아오셔서 약간 격앙된 목소리로 왜 구글은 인덱스를 하지 말라고 표시한 문서까지도 검색결과에 나오게 하냐고 물으셨습니다. noindex에 대한 이야기였습니다.

여러분은 noindex 메타태그에 대해서 들어보셨나요? noindex와 관련하여 nofollow, nocache와 같은 메타태그도 있는데 잘 모르시는 분들을 위하여 간단히 설명하고, 왜 이런 메타태그가 잘 동작하지 않는 지 알려드리겠습니다.

noindex 메타태그는 검색엔진에게 어떤 페이지를 색인하지 말라는 표지입니다. noindex 메타태그가 들어있는 페이지는 검색엔진이 색인에 포함시키지 않고 따라서 검색결과에도 나오지 않습니다. nofollow는 해당 문서안에 포함된 링크들을 검색로봇이 따라가지 말라는 표지입니다. nocache는 검색결과에서 해당 페이지의 캐시(저장된 페이지)를 제공하지 않도록 합니다. noindex가 사용된 HTML페이지는 다음과 비슷할 것입니다.

<html>
  <head>
   <meta name="robot" content="noindex"/>
  </head>
<body>
   이 페이지는 색인하지 않습니다.
</body>
</html>

이 페이지는 색인하지 않습니다.

noindex등의 메타태그에 대해서 더 알고 싶으시면 이곳을 참고하세요.

서론이 좀 길었는데 구글 검색엔진이 이 메타태그를 지키지 않는다는 민원이 종종 있습니다. 이런 사례를 자세히 들여다보면 상당수는 간단한 검색엔진 동작방식에 대한 오해에서 비롯되었음을 알게됩니다.

서두에 말씀드렸던 그 웹마스터분은 자기 웹사이트의 모든 페이지에 noindex를 다 넣었고 robots.txt 로도 구글 크롤링을 막았는데 도대체 말을 안듣는다고 하소연을 하였습니다. 그 분이 하시는 말씀중에 문제의 원인이 있었는데 혹시 눈치채셨나요?

이해를 돕기 위해서 검색엔진이 동작하는 방식을 간단하게 설명하겠습니다.


자 구글 검색 로봇은 공개된 B.com에서 b1.html과 b2.html을 수집하여 그 내용을 확인하고 해당 문서들이 포함한 링크를 따라 A.com의 문서를 수집하려고 합니다. 이때 구글 검색 로봇은 A.com의 robots.txt를 먼저 읽어서 A.com의 모든 문서를 읽지 말라는 지시사항을 읽고 그것을 그대로 따릅니다. A.com의 문서를 읽지 않고 그때까지 모은 정보를 바탕으로 색인을 만들게 되는거죠. 그 색인에는 B.com의 b1.html과 b2.html의 제목, URL, 스니펫(검색결과에 나오는 문서요약) 등이 포함됩니다. 자 이제 A.com은 어떻게 될까요? 이상하게 들리겠지만 A.com의 a.html도 검색결과에 나올 수 있습니다. 어떻게요?

구글 검색 엔진은 B.com을 통해 A.com의 a.html의 존재에 대해 알게되었습니다. 그런데 A.com의 크롤링이 금지되었으므로 a.html의 내용에 들어있는 noindex 지시사항을 보지 못합니다. 따라서 실제 내용은 모르지만 B.com에서 알려준 A.com의 페이지에 대한 링크를 검색결과에 표시하게 됩니다. 아닙니다! A.com의 내용이 검색되는 것이 아니라 B.com의 내용이 검색되는 것 뿐입니다.

왜 이런일이 일어날까요?

웹 검색에서 크롤링(수집)과 색인화는 별개의 프로세스이기 때문입니다. 예를 들어, 크롤링 없이 색인을 만들 수 있을까요? 네, 그렇습니다. 초창기 야후와 같은 디렉토리 검색 사이트들은 다들 아시는 것처럼 사람이 직접 색인을 작성했습니다. 그 시대에도 웹 서퍼라는 전문가가 해당 사이트를 방문하여 분석한 후 색인을 만들었지만 사이트를 방문하지 않고도 충분히 확신할 근거가 있다면 수집/분석 없이도 색인을 만들 수 있었습니다. 이제는 웹이 엄청나게 방대해지면서 더 이상 사람이 일일이 색인을 할 수 없으므로 현대적인 검색엔진들은 자동화된 크롤링에 의지하여 정보를 수집하고 색인화를 합니다. 크롤링과 색인 생성 작업이 자동화된 이후에도 a.html이라는 페이지를 크롤하지 않고 b.html만을 기준으로 색인을 만들 수 있습니다.

그러면 색인을 하지 못하도록 하려면 어떻게 해야 할까요?

예전에는 검색회사에 직접 전화를 걸거나 이메일로 삭제요청을 해야 했습니다. 요새는 HTML표준에서 제공하는 noindex메타태그를 페이지에 넣으면 간단하게 색인을 하지 않도록 합니다. 다만, 조건이 한 가지 있습니다. 검색엔진이 noindex지시사항을 읽을 수 있도록 robots.txt로 막지 말아야 합니다.

웹 페이지를 noindex로 표시해놓고 robots.txt로 막는 것은 반드시 지켜야 할 법을 대로에 게시하고서는 그것을 보려는 사람의 눈을 가리는 것과 같습니다.

자 이제 noindex 메타태그를 사용하시려면 robots.txt 검색 로봇 지시자를 그에 맞게 꼭 수정하십시오.

* 웹마스터를 위한 검색이야기의 다른 시리즈를 보시려면 여기를 눌러주세요.

작성자: 구글코리아 소프트웨어 엔지니어 이동휘