티스토리 뷰
robots.txt 파일은 크롤러에게 교통 표지판과 같은 역할을 합니다. 도로에 교통 표지판이 없다면 매우 혼잡하거나 여기저기서 사고가 끊이지 않을 것입니다. 이번 포스팅에서는 검색엔진 크롤러가 웹사이트에서 접근해야 하지 말아야 할 곳은 어디인지, 사이트맵 (sitemap.xml) 은 어디에 있는지와 같은 중요한 정보를 담고 있는 robots.txt 파일에 대한 모든 것을 알려드리겠습니다.
1. robots.txt 란?
robots.txt는 웹사이트에서 크롤링하며 정보를 수집하는 검색엔진 크롤러(또는 검색 로봇)가 액세스 하거나 정보수집을 해도 되는 페이지가 무엇인지, 해서는 안 되는 페이지가 무엇인지 알려주는 역할을 하는 .txt (텍스트) 파일입니다. robots.txt 파일은 검색엔진 크롤러가 웹사이트에 접속하여 정보 수집을 하며 보내는 요청(request)으로 인해 사이트 과부하되는 것을 방지하기 위해 사용됩니다.
robots.txt 파일은 도로에 있는 교통 표지판과 비슷한 역할로 어떤 도로에 진입이 불가하다는 표지판이 있을 경우 진입하지 말아야 하는 것처럼, 검색엔진 크롤러 또한 robots.txt 에서 액세스가 허용되지 않은 디렉토리를 발견한다면 원칙적으로는 크롤링하지 않습니다.
2. robots.txt을 적용해야 하는 이유
검색엔진 최적화 측면에서 보았을 때 robots.txt 파일을 적용해야 하는 이유는 첫 번째는 검색엔진 크롤러의 과도한 크롤링 및 요청으로 인한 과부하 방지를 위해서입니다. 크롤러의 정보 수집 및 크롤링을 제한함으로써 불필요한 요청을 줄이고, 서버에서 처리해야 하는 요청을 줄여 과부하로 인한 문제가 생기는 것을 방지할 수 있습니다.
두 번째는 검색엔진 크롤러의 일일 요청 수를 뜻하는 크롤 버짓 (또는 크롤링 예산 – Crawl budget) 낭비 방지를 위해서입니다. 검색엔진은 웹사이트에 방문해 정보를 수집할 때 웹사이트의 규모를 포함한 여러 가지 요소들을 고려하여 하루에 얼마나 많은 페이지를 방문 및 수집할지 설정합니다. 그런데 robots.txt 파일에서 크게 중요하지 않거나 크롤링되지 말아야 하는 페이지를 지정하지 않는다면, 일일 크롤 버짓이 낭비될 수 있습니다. 결과적으로 정작 중요한 업데이트 또는 새로운 페이지가 검색엔진 결과에 반영되지 않거나 빠르게 색인되는데 불리합니다.
세 번째는 robots.txt를 이용해 검색엔진 크롤러에게 사이트맵 (sitemap.xml)의 위치를 제공하여 웹사이트의 콘텐츠가 검색엔진에게 더 잘 발견될 수 있도록 하기 위해서입니다. 물론 구글 서치 콘솔이나 네이버 서치 어드바이저와 같은 웹마스터 도구를 이용해 사이트맵을 검색엔진에 제출할 수 있지만, robots.txt에 사이트맵 디렉토리를 언급함으로써 사이트맵이 구글과 네이버를 포함한 다른 검색 검색엔진 크롤러에게 빠르게 발견될 수 있습니다.
3. robots.txt 작성하는 방법
robots.txt은 텍스트 파일(. txt )로 작성이 되어야 합니다. 그러기 위해서는 텍스트 파일을 편집할 수 있는 툴 (메모장, 텍스트 편집기, MS 워드) 등으로 robots.txt 파일을 작성한 뒤,. txt 파일 형식으로 저장하여야 합니다. robots.txt는 사람이 아닌 검색엔진 크롤러 (예: 구글봇, 네이버 예티, 빙봇 등)가 읽고 인식해야 하는 파일이기 때문에 정해진 형식과 문법에 따라 작성해야 합니다. 검색엔진 크롤러 별로 robots.txt 파일을 해석하는 방식이 조금씩 차이가 있다고 알려져 있으나, 기본적인 문법은 다르지 않습니다. 가장 기본적인 robots.txt 파일은 아래와 같은 형식을 가집니다.
#robots.txt 예시 - 기본 형식
User-agent: *
Disallow: /forbidden/
robots.txt 는 기본적으로 두 가지의 정보를 포함합니다. 위의 robots.txt 예시처럼 어떤 검색엔진 크롤러를 지정할 것인지 (User-agent 값), 그리고 어떤 디렉토리를 제한할 것인지 (Disallow 값)에 대한 정보를 지정할 수 있습니다. 위의 robots.txt 기본 형식 예시는 모든 검색엔진 크롤러를 (User-agent: *) 모든 , /forbidden/ 서브 폴더 이하 디렉토리의 크롤링을 제한한다 (Disallow: /forbidden/)라는 의미입니다.
※ robots.txt를 구성하는 요소는 크게 네 가지가 있는데 각각의 구성 요소를 모두 포함할 필요는 없지만 “User-agent”는 반드시 포함되어야 합니다.
- User-agent: robots.txt 에서 지정하는 크롤링 규칙이 적용되어야 할 크롤러를 지정합니다.
- Allow: 크롤링을 허용할 경로입니다 (/ 부터의 상대 경로).
- Disallow: 크롤링을 제한할 경로입니다 (/ 부터의 상대 경로).
- Sitemap: 사이트맵이 위치한 경로의 전체 URL입니다 (https:// 부터 /sitemap.xml까지의 전체 절대경로 URL).
※ User-agent 이름은 검색엔진마다 모두 다릅니다. 가장 대표적으로 알려져 있는 구글 (Googlebot), 네이버 (Yeti), 빙(Bingbot), 야후 (Slurp) 외에도 각 검색엔진마다 User-agent 이름을 확인하여야 합니다. 아래는 자주 쓰이거나 영향력이 있는 서치 엔진별 크롤러 User-agent 이름 모음입니다. 웹사이트 크롤링 규정을 적용할 검색엔진 크롤러명을 지정하실 때 참고하시길 바랍니다.
- 구글: Googlebot
- 네이버: Yeti
- 다음: Daum
- 빙: Bingbot
4. robots.txt 문법과 예시
robots.txt는 사람이 아닌 검색엔진 크롤러를 위한 파일이기 때문에 특정한 형식과 문법을 지켜 작성해야 합니다. 가장 기본적인 형태의 “User-agent”와 “Disallow”를 기본 뼈대로 여러 조합을 통해 특정 크롤러 별, 특정 디렉토리 별로 크롤링 제한을 적용할 수 있습니다. robots.txt 파일을 작성할 때 가장 기본적으로 명심하셔야 할 것은, robots.txt 파일에서 특정하게 명시하지 않은 크롤러와 디렉토리는 모두 크롤링이 가능한 것으로 간주됩니다. 그렇기 때문에 특별한 이유가 있는 것이 아니라면 따로 크롤링이 가능한 검색엔진 크롤러 또는 디렉토리를 지정할 필요가 없습니다
※ 설정 예시 - User-agent(로봇 이름 명시) 및 Allow 또는 Disallow(해당 URL의 접근 허용 여부 명시)로 구성
robots.txt | 허용/차단 내용 |
User-agent: * Disallow: / |
- 모든 검색로봇(*)에 대해 웹사이트 전체(/)에 대한 접근(크롤링) 차단 |
User-agent: Googlebot User-agent: Yeti Disallow: (또는 Allow: /) |
- Googlebot, Yeti 검색 로봇에 대해 웹사이트 전체 접근 허용 - [Disallow: 공백]의 경우 웹사이트 전체 허용 (Allow: / 와 동일) |
User-agent: * Disallow: /cgi-bin/ Disallow: /private/p.html |
- 모든 검색로봇(*에) 대해 /cgi-bin 디렉터리 및 /private/p.html 페이지 접근을 차단 |
User-agent: Googlebot-image Disallow: /*.pdf$ Disallow: /*? |
- Googlebot-image 검색 로봇에 대해 .pdf로 끝나는 URL 및 ?가 포함 된 모든 URL 차단 |
※ robots.txt 작성 시 유의 사항
- 다중 검색로봇 지정 시, 한 줄을 띄워야 함 (줄 바꿈)
User-agent: 로봇명1
Disallow: /
User-agent: 로봇명2
Disallow: /