블로그나 웹사이트를 운영하면 검색 노출이 중요한데, 그 전에 “뭘 보여주고 뭘 안 보여줄지”부터 정해야 한다. 이걸 담당하는 게 robots.txt와 meta robots 태그다. 비슷해 보여도 하는 일이 다르고, 잘못 쓰면 SEO에 바로 악영향이 간다.
robots.txt - 크롤러의 출입문
robots.txt는 웹사이트 루트에 놓는 텍스트 파일이다. 검색엔진 크롤러(Googlebot, Yeti 등)가 사이트에 방문하면 가장 먼저 이 파일을 읽고, 어디를 크롤링해도 되는지 확인한다.
User-agent: *
Allow: /
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml
User-agent로 대상 크롤러를 지정하고, Allow/Disallow로 경로별 접근을 허용하거나 차단한다. Sitemap 지시어로 사이트맵 위치를 알려줄 수도 있다. robots.txt는 2022년 RFC 9309로 공식 인터넷 표준이 되었다. 이전에 작성한 robots.txt 세팅 가이드에서 기본 문법을 더 자세히 다뤘다.
직접 작성하기 번거롭다면 robots.txt 생성기로 빠르게 만들 수 있다.
SEO에서 중요한 이유
크롤 예산(crawl budget)이라는 게 있다. 구글은 사이트마다 크롤링에 할당하는 리소스가 정해져 있는데, 관리자 페이지나 중복 콘텐츠 같은 불필요한 경로를 크롤러가 돌아다니면 정작 중요한 페이지를 제때 크롤링 못 할 수 있다. robots.txt로 불필요한 경로를 차단하면 크롤러가 중요한 페이지에 집중하게 된다.
주의할 점
robots.txt로 크롤링을 차단해도 색인은 막을 수 없다. 다른 사이트에서 해당 URL로 링크를 걸면, 구글은 페이지 내용을 모른 채로도 URL 자체를 색인에 포함시킬 수 있다. 구글은 2019년 9월부터 robots.txt의 noindex 지시어 지원을 공식 중단했다. 색인을 막으려면 반드시 meta robots 태그나 X-Robots-Tag를 써야 한다.
그리고 robots.txt는 어디까지나 권고사항이라는 점도 기억해둬야 한다. 구글ㆍ네이버 같은 정상 크롤러는 규칙을 지키지만, 악성 봇이나 스크래퍼는 무시하고 들어온다. 민감한 경로를 숨기려는 보안 목적으로 쓰면 안 되고, 그런 건 서버 인증이나 접근 제어로 막아야 한다.
meta robots 태그 - 페이지별 색인 제어
meta robots는 HTML <head> 안에 넣는 태그로, 해당 페이지의 색인 여부를 크롤러에게 알려준다.
<meta name="robots" content="noindex, nofollow">

주요 지시어:
- noindex - 이 페이지를 검색결과에 표시하지 마라
- nofollow - 이 페이지의 링크를 따라가지 마라
- noarchive - 캐시된 페이지를 보여주지 마라
- max-snippet - 검색결과 스니펫 길이 제한
- max-image-preview - 이미지 미리보기 크기 제한(none/standard/large)
meta robots 태그 활용법에서 저품질 블로그 해결 사례도 다룬 적 있다.
별도로 지정하지 않으면 index, follow가 기본값이라 굳이 명시할 필요는 없다. 색인을 빼거나 링크를 무시시켜야 할 때만 쓰면 된다.
X-Robots-Tag - HTTP 헤더 방식
meta robots 태그는 HTML 파일에만 넣을 수 있다. PDF, 이미지, 동영상, JSON 같은 비HTML 리소스의 색인을 막으려면 meta 태그를 넣을 곳이 없다. 이때 쓰는 게 X-Robots-Tag HTTP 응답 헤더다.
X-Robots-Tag: noindex, nofollow
지시어 문법은 meta robots와 동일하다. 예를 들어 사이트의 모든 PDF를 검색결과에서 빼고 싶다면 Nginx나 Apache 설정에서 .pdf 확장자에 대해 이 헤더를 내려보내도록 걸면 된다. 특정 크롤러만 지정하는 것도 가능하다.
X-Robots-Tag: googlebot: noindex
비HTML 자원이 많은 사이트라면 meta robots만으로는 색인 제어가 불완전하다. 이 부분이 빠지면 검색결과에 엉뚱한 PDF가 노출되는 사고가 생긴다.
둘의 차이 정리
핵심은 간단하다.
- robots.txt: 크롤링을 차단한다. “이 경로는 오지 마”
- meta robots: 색인을 제어한다. “이 페이지는 검색결과에 넣지 마”
robots.txt로 크롤링을 차단해놓고 meta robots noindex를 넣어봤자 소용없다. 크롤러가 페이지를 못 읽으니 noindex 태그도 못 보는 거다. 색인을 확실히 막으려면 크롤링은 허용하되 noindex를 걸어야 한다. 이걸 반대로 해서 삽질하는 경우가 꽤 있다.
실전 활용
- 관리자 페이지, 테스트 환경 -> robots.txt로 크롤링 차단
- 중복 콘텐츠, 태그 페이지 -> meta robots noindex
- PDFㆍ이미지 등 비HTML 파일 -> X-Robots-Tag 헤더
- 사이트맵 -> robots.txt에 Sitemap 경로 명시
- 이미지 검색 노출 ->
max-image-preview:large설정
설정을 바꿨으면 구글 서치 콘솔의 robots.txt 테스터와 URL 검사 도구로 실제 적용 여부를 확인하는 게 좋다. 내가 막았다고 생각한 경로가 막혀 있지 않거나, 반대로 중요한 페이지가 막혀 있는 경우가 생각보다 많다.
검색엔진 입장에서 내 사이트를 깔끔하게 정리해두는 게 SEO의 기본이다. robots.txt, meta robots, X-Robots-Tag 세 가지를 용도에 맞게 쓰면 크롤링 낭비를 줄이고 원하는 페이지만 검색결과에 올릴 수 있다.