Robots.txt와 Sitemap.xml 제대로 설정하기

Robots.txt와 Sitemap.xml 제대로 설정하기

웹사이트 방문자가 URL에 접속해서 읽은 정보들을 자신의 기존 지식 체계 안에서 저장하는 것 처럼 검색 크롤러도 웹페이지의 콘텐츠를 카피해서 검색엔진으로 이동시키고 이를 주제별로 색인한다. 이렇게 색인된 정보만이 검색 결과에서 노출될 수 있기 때문에 마케터 입장에서 웹사이트에 접근하는 검색엔진의 크롤러를 어떻게 대응하는가는 검색엔진최적화의 관점에서 아주 중요하다.


텍스트 파일 형식의 로봇 텍스트 파일(robots.txt)과 xml형식의 사이트맵 파일(sitemap.xml)은 사이트에 방문하는 검색엔진의 크롤러를 제어하기 위해 설정하는 파일이다. 이를 잘 못 설정했을 경우에는 아래의 예시 처럼 사이트 전체가 검색엔진에 의해 색인이 안되는 문제를 일으킬 정도로 중요한 SEO 관리 포인트이지만 많은 웹사이트 관리자들이 쉽기 놓치기 때문에 주의가 필요하다.

사이트맵과 로봇 텍스트 파일을 잘 못 설정한 예는 사실 아래의 예 만이 아니다. 의외로 많은 국내 금융권 기업과 국가 기관과 지자체 그리고 대학의 웹사이트에서 이런 실수를 쉽게 찾아 볼 수 있다. 아래의 예시는 국내 유수 종합금융 기업 우리종합금융의 의 홈페이지의 경우인데 robots.txt파일의 설정이 잘 못되어 검색에 색인된 페이지가 2페이지에 머무는 상황이 발생하고 있다. 오른쪽 그림을 보면 이런 잘 못된 로봇 텍스트 파일이 게재된 시점이 2019년 중순 경인 것으로 보이는데 그 결과 트래픽이 일 30만명 수준에서 2천명대로 줄어든 것을 볼 수 있다

[검색결과에 페이지 정보가 표시되지 않는 오류의 예시]

 [자연 검색 유입 트래픽 추이]

사실 이 문제를 해결 하는 방법은 생각보다 간단한데, 구글의 웹 크롤러가 웹 페이지 내용을 읽지 못하도록 설정되어 있는 로봇 텍스트 규칙을 삭제하거나 변경하면 해결된다.
검색 웹사이트를 기획하면서 우리는 방문자의 경험을 고려하여 웹 인터페이스를 설계한다. 하지만 웹 사이트에는 방문자에는 사람만 있는 것은 아니다. 또 다른 타입의 방문자가 있는데 바로 검색엔진이 웹 사이트의 콘텐츠를 읽어 색인하기 위해 보낸 웹 크롤러 로봇이다. 자 이제부터 크롤러를 제어하는 로봇 텍스트와 사이트 맵에 대해서 알아보자.

Robots.txt란 무엇인가?

Robots.txt는 검색의 크롤링 로봇이 웹에 접근할 때 로봇이 지켜야하는 규칙과 사이트맵(sitemap.xml) 파일의 위치를 알려주는 역할을 하는 파일이다. 실제로 robots.txt에 기록된 내용을 통해서 웹 사이트의 디렉토리 별로 크롤링을 할 수 있는 지 할 수 없는 지를 지정할 수 있는데 만약 이 파일에 아무런 내용도 지정하지 않으면 검색엔진의 크롤링 로봇들은 웹사이트에서 확인할 수 있는 모든 콘텐츠를 색인하고 검색 결과에 노출 시킨다. 따라서 로봇 텍스트 파일의 역할을 아래와 같이 크게 3가지로 구분할 수 있다.

Robots.txt의 역할

  • 웹사이트 내의 특정 콘텐츠, 웹페이지, 서브 폴더, 디렉토리로의 크롤러 접근 제어
    • 사이트의 리뉴얼이나 구축 중에 외부 팀과 협업을 위해 외부에서 콘텐츠로의 억세스는 가능하게 하지만 검색 결과에는 나타나지 않도록 해야하는 경우 사용할 수 있다. 특히 이런 페이지들이 특정 디렉토리 안에 모두 모여 있는 경우에 로봇 텍스트 파일을 이용하는 것은 좋은 선택이다. (경우에 따라서는 메타 로봇 설정을 페이지별로 하는 것이 로봇 텍스트 보다 더 나은 선택이 될 경우도 있다)
    • 웹사이트 이용자들의 개인 정보가 게재된 페이지나 사이트 관리자를 위한 콘텐츠 이 외부에 누출되는 것을 막기 위해서도 널리 사용된다.
    • 동적으로 자동 생성되는 태그 페이지나 웹사이트 내부 검색 페이지가 콘텐츠로서의 퀄리티가 높지 않을 경우 의도적으로 검색 크롤링을 막는 것이 사이트 평가에 도움이 되는 경우가 있는데 이를 경우도 도움이 된다.
    • 주요 검색 엔진이 사이트 내에서만 제공되야할 이미지 및 PDF 파일 그리고 동영상 파일 등과 같은 웹 사이트의 특정 파일의 URL 색인을 하지 못하도록 해야할 때 사용된다.
  • 사이트 맵 위치 전달
    웹 사이트의 sitemap.xml 형식의 사이트 맵의 위치를 검색 크롤링 로봇에게 알리는데 사용된다. 구글을 시작으로 많은 웹 검색엔진들이 최근엔 웹 마스터툴(구글은 구글 서치 콘솔이라고 부름)을 제공하고 있는데, 사이트 맵을 바로 이 웹 마스터툴을 이용해서 제출 할 수 있다.
  • 검색 크롤러에 의한 과부하 방지
    우리가 잘 알고 있는 구글이나 네이버와 검색 엔진만 있는 것이 아니다. 많은 회사들이 운영하는 웹 크롤러가 있기 때문에 이들 크롤러가 한 번에 여러 콘텐츠를 로드 하면 서버에 큰 부담이 발생한다. 따라서 이런 과부하가 발생하지 않도록 크롤링 지연 등을 지정하는 것도 중요한 로봇 텍스트의 역할이다.

Robots.txt의 일반적인 사용 예시

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /user-profile/
Disallow: /scripts/

실제로 이런 로봇 텍스트 파일을 사용하려면 이 파일을 웹 서버의 루트 디렉토리에 배치하면 된다. 만약 당신의 웹사이트가 http://www.ascentkorea.com/이라면 로봇 텍스트 파일은 http://www.ascentkorea.com/ 다음에 위치 시키면 된다.

Robots.txt로 모든 정보를 차단하는 설정 예시

글의 앞 쪽에서 예시로 들었던 금융 기관의 웹페이지가 색인이 되지 않았던 것과 같은 류의 문제들은 대부분 모든 로봇이 사이트의 어느 곳에도 접근하지 못하도록 한 경우인데 아래와 같이 설정이 되었을 수 있다.

User-agent: *
Disallow: /

Robots.txt로 사이트 맵의 위치를 알리는 설정 예시

로봇 텍스트 파일의 주된 역할 중의 하나가 sitemap.xml 파일의 위치를 크롤러에게 알리는 것인데 이 때는 아래와 같이 설정할 수 있다

User-agent: *
Disallow:
Sitemap: http://www.ascentkorea.com/sitemap.xml

이상 간략히 로봇 텍스트에 대해 알아보았다. 하지만 기억을 해둬야할 것이 두가지가 있다.
1. robots.txt 파일은 모든 사람이 접근할 수 있기 때문에 보안의 수단으로 사용해선 안된다.
2. 검색엔진 크롤링 로봇이 robots.txt 내용을 반드시 따르는 것은 아니란 것을 기억해야한다.

Sitemap.xml(사이트맵) 이란 무엇인가?

Sitemap.xml(사이트 맵)  파일은 검색 엔진 크롤링 로봇에게 웹 사이트에서 크롤링 해야 할 URL 을 전달한다. 사이트 맵 파일은 해당 사이트의 URL 모두를 XML 파일 형식으로 포함하는데 웹 사이트 운영자는 각 URL과 추가 정보로서 이 URL 콘텐츠의 최종 업데이트 시점 및 업데이트 빈도, 그리고 다른 URL 대비 상대적인 중요도 정보를 여기에 담을 수 있다. 사이트 맵을 지원하는 검색 엔진은 이 정보를 사용하여 웹 사이트 크롤링을 보다 효율적으로 할 수 있게된다. 사이트 맵은 검색 엔진에 URL을 추가 혹은 배제하는 규약으로서 로봇 텍스트 파일을 보완하는 역할을 한다. 그리고 Sitemap.xml파일은 사이트 콘텐츠의 변화에 맞춰 늘 업데이트 되어야하므로 수동으로 관리하기 보다는 가능한 사이트의 변화에 따라 매일 자동으로 업데이트 되도록 하는 것이 좋다. 

Sitemap.xml(사이트 맵)의 역할 

  • 웹사이트의 주요 인터페이스 즉 글로벌 네비게이션 바 등의 메뉴를 통해 바로 접근할 수 없는 웹 콘텐츠 등을 정의하고 크롤링 로봇이 바로 URL에 접근할 수 있게 한다.
  • 웹 사이트가 Ajax 및 Silverlight , Flash 등을 많이 사용하는 경우 검색 엔진이 모든 페이지의 콘텐츠로 접근이 어려울 수 있기 때문에 이 부분을 보완해서 컨텐츠에 크롤러를 바로 유도한다.

웹 마스터는 사이트의 모든 URL을 포함하는 사이트 맵을 작성하고 이를 구글의 서치 콘솔 같은 툴을 이용해서 검색 엔진에 등록할 수 있다. 현재 구글, 빙, 야후, 바이두, 얀덱스 같은 글로벌 검색 엔진들이 사이트 맵 표준에 대응하고 있기 때문에 사이트 맵에 대응하면 사실상 주요 검색 엔진 군에 업데이트된 페이지 정보를 쉽게 알릴 수 있다. 

사이트 맵 제출이 색인을 보장하는 것은 아니다.
사이트 맵은 일반적으로 검색 엔진이 웹 페이지를 크롤링하여 페이지 URL을 발견하고 확인하는 메커니즘을 보완하는 의미이지 사이트 맵이 이 크롤링을 완전히 대체하는 것은 아니다. 또한 검색엔진이 이 사이트 맵 표준을 지원한다고 해서 제출된 웹 페이지들을 모두 색인해준다는 보증이 있는 것도 아니란 것을 꼭 기억해야한다.

사이트 맵의 종류에는 sitemap.xml만 있는 것은 아니다. 오히려 우리들에게 더 익숙한 것은 웹사이트의 사이트 맵이라는 이름을 가진 별도의 페이지일 것이다. 이 두가지 사이트 맵은 아래와 같이 서로 다른 타겟을 위해 설계된 것임을 기억해야한다. 

  • Sitemap.xml : 검색 엔진의 크롤링 로봇을 위한 파일
  • Sitemap.html: 웹사이트 방문자나 유저를 위한 파일

Sitemap.xml 형식 

사이트 맵의 일반적인 형식은 아래와 같은데, 코드를 직접 작성하는 대신 사이트 맵 생성 도구를 사용하여 생성하고 상시 자동 업데이트 되게 하는 것이 좋다. 그리고 이 사이트 맵 파일은 웹사이트의 루트 디렉토리 밑에 위치시키는 것이 좋다. 구글은 우선 순위를 지정하는 <priority>나 콘텐츠 변경 주기를 표현하는 <changefreq>값을 무시하고 구글이 정한 기준에 의해 평가하고 사이트 변경을 반영한다. 

  <? xml version = "1.0"encoding = "UTF-8"?>
<urlset
      xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance"
      xsi : schemaLocation = "http://www.sitemaps.org/schemas/sitemap/0.9
      http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd ">
<URL>
  <loc> https://www.ascentkorea.com/search-engine-optimization/ </ loc>
  <priority> 1.00 </ priority>
  <changefreq> weekly </ changefreq>
</ url>
<URL>
  <loc> https://www.ascentkorea.com/search-data-research-content-marketing/ </ loc>
  <priority> 0.80 </ priority>
  <changefreq> weekly </ changefreq>
</ url>
<URL>
  <loc> https://www.ascentkorea.com/japan-marketing/ </ loc>
  <priority> 0.80 </ priority>
  <changefreq> weekly </ changefreq>
</ url>
<URL>
  <loc> https://www.ascentkorea.com/ascent-korea-official-blog-listeningmind/ </ loc>
  <priority> 0.80 </ priority>
  <changefreq> weekly </ changefreq>
</ url>
</ urlset>

Sitemap.xml(사이트 맵)의 운영 상의 주의점

  • Sitemap 파일은 UTF-8로 인코딩되야한다.
  • 큰 사이트 맵은 작은 사이트 맵으로 분할하여 제출한다. 이 때 최대 사이트 맵 크기는 URL 50,000개 / 압축되지 않은 경우 사이즈는 50MB까지다. 
  • 여러개의 분할된 사이트 맵을 제출할 때에는 개별 사이트 맵을 제출 하는 대신 사이트 맵 색인 파일을 사용하여  모든 개별 사이트 맵을 나열한 사이트 맵을 같이 제출 하는 것이 좋다.
  • 두 가지 버전의 사이트 (예 : www 및 비 www)가 있는 경우 선호하는 사이트 URL을 결정하고 여기에 사이트 맵을 배치하고 다른 사이트에 rel = canonical 또는 리디렉션을 추가한다.
  • 동영상, 이미지, 뉴스와 같은 다른 포맷의 미디어를 사이트 맵으로 제출 할 수 있다.
  • 다른 언어 또는 지역에 대한 대체 페이지가 있는 경우 사이트 맵에 hreflang을 사용하여 대체 URL을 나타낼 수 있다.