사실 온라인에서 제 생업에 대해서 이야기를 잘 안하는 편이지만 제가 하고 있는 중요한 일 중 하나"였던"일이 검색엔진최적화(SEO)였습니다. 그런데 오늘 트위터 타임라인을 보다보니 SEO적으로(?) 분석해볼만한 것이 하나 보여서 평소에 잘 안하던(?) 주제로 포스팅을 해볼까 합니다.

제가 팔로우하고 있는 @JooStory 님의 글입니다.

구글 검색 결과를 보다보면 특히 최근에 “사이트의 robots.txt로 인해 검색 결과의 설명을 사용할 수 없습니다"라는 검색 결과를 가진 사이트가 은근히 많습니다. robots.txt의 역할은 검색 봇이 사이트에 와서 돌아다니지 못하는 곳을 지정하는 역할을 합니다. 즉 저렇게 검색 결과가 나온다는 것은 해당 사이트의 robots.txt가 구글 봇의 접근을 차단했기 때문에 나오는 것입니다.

그럼 왜 사이트에서 검색하지 말라고 했는데도 구글은 검색 결과를 저렇게 해서라도 보여주는 것일까요? 얼핏 생각하기에는 구글의 귀책사유가 더 커보입니다. 검색엔진의 권한 남용 같기도 하지요.

하지만 저렇게 나오는 것은 사실 해당 사이트가 구글 봇의 크롤링(Crawling)까지는 차단하였지만 인덱싱(Indexing)까지는 차단하지 못했기 때문입니다. 제가 보기엔 구글이 검색 남용을 했다기보다 해당 사이트의 검색엔진최적화가 부족한 측면이 더 큽니다.

robots.txt나 크롤링이나 인덱싱 같은 용어들에 대한 설명은 저보다 더 설명을 잘해주실 수 있는 좋은 글이 있어 아래 글로 대체합니다.

크롤링과 인덱싱의 차이점

요약하자면 크롤링은 검색 엔진이 사이트를 돌아다니면서 컨텐츠를 수집하는 행위이고, 인덱싱은 그 결과를 검색 결과 사이트에 잘 정리하여 쌓아두는 행위라고 할 수 있습니다. 검색 엔진은 크롤링을 통해 각각의 페이지가 어떤 컨텐츠를 담고 있는지 알아내고, 그것을 인덱싱을 통하여 검색 사이트에 전달하는 것입니다.

대부분의 사이트는 사이트가 검색엔진에 노출 될수록 좋기 때문에 검색엔진의 접근을 허용해놓습니다. 하지만 특정한 사이트들은 이런 검색엔진의 접근을 차단하고 있는 경우가 있습니다. 바로 위의 네이버처럼 말이죠.

검색엔진을 막는 이유는 여러가지가 있습니다. 외부로 굳이 세어나가면 안되는 정보라든지, 검색엔진이 방문하면 사이트의 과부하를 일으킬 수 있는 페이지라든지.. 특정 사이트가 구글봇의 접근을 막았다고 하여 그것이 잘못되었다는 가치 판단을 할 수는 없습니다.

위의 네이버도 검색엔진의 접근을 robots.txt로 막았습니다. 하지만 구글은 그것을 굳이 검색하여 화면에 보여주고 있죠. robots.txt는 사실 검색엔진의 크롤링을 차단할 수 있지만 인덱싱을 막지는 못합니다. 구글에서 검색 결과가 저렇게 나오는 페이지는 분명 크롤링이 허용된 사이트 내의 페이지 어딘가에서 가리키는 링크가 있었다는 증거입니다. 구글봇이 그 페이지를 크롤링하다보니 저 페이지로 연결되는 링크가 있었다는 정보를 얻어서 해당 페이지를 인덱싱 해놓았지만, 막상 가보니 크롤링이 차단되어서 내용은 보지 못한겁니다.

즉, 구글 입장에서는 이런 이야기라는 것이죠. "사이트에 가보니 저기 뭔가 페이지가 있다는 것까지는 알 수 있었지만, 그 페이지의 내용까지는 알 수 없었어”

그렇다면 저런 경우를 막으려면 어떻게 해야할까요? 페이지의 nofollow 속성이나 링크 메타 속성을 통해 차단할 수도 있습니다만, 가장 간단한 방법은 해당 페이지 자체의 인덱싱을 차단하는 것입니다.

검색 되지 않아야 하는 페이지에 메타 태그로 아래 태그를 넣어주면 끝입니다.

<meta name="robots" content="noindex"> 

이렇게 하면 검색봇은 “아 이 페이지는 인덱싱되어서는 안되는 페이지구나"라는 것을 알고 검색 결과 자체에서 이 페이지를 보여주지 않게 됩니다. 위에 제가 링크한 블로그 글에도 있지만, 이 방법이 검색 결과에서 나오지 않았으면 하는 페이지를 삭제할 수 있는 가장 효과적이고 간단한 방법입니다.

여기서 중요한 것은 robots.txt로 크롤링을 차단해서는 안된다는 것입니다. 크롤링을 차단하면 검색엔진은 그 페이지의 내용조차 볼 수 없습니다. 이렇게 되면 아무리 메타 태그로 페이지의 인덱싱을 막아봐야 검색 엔진은 내용을 볼 수가 없기 때문에 인덱싱을 해버립니다.

즉, 위의 네이버 경우처럼 저 페이지가 정말로 구글에 검색이 안되어야 하는 페이지였다면, robots.txt를 통해 크롤링을 막을 것이 아니라 인덱싱을 막았어야 했던 것입니다. 저는 솔직히 국내 최대의 검색 사이트라고 칭하는 네이버가 구글에서 페이지가 저렇게 나오도록 방치해두고 있다는 것이 더 이해가 안됩니다.(저 페이지를 막았어야 했는지에대한 가치판단은 역시 저로서는 할 수 없습니다.)

어쨌든 robots.txt와 메타 태그 같은 간단한 수단을 사용하여 검색 봇을 쉽게 컨트롤할 수 있습니다. 특히 검색엔진에 표시하고 싶지 않은 페이지가 있다면 위와 같은 방법을 사용하면 확실하게 차단할 수 있을 것입니다.