Robots.txt 완벽 가이드: 검색 엔진 크롤러 제어하기
robots.txt 파일의 작성법과 검색 엔진 크롤러를 효과적으로 관리하는 방법을 알아봅니다.

Robots.txt의 역할과 한계
robots.txt는 웹사이트의 루트 디렉토리에 위치하는 텍스트 파일로, 검색 엔진 크롤러에게 어떤 페이지를 크롤링할지 안내합니다. 1994년에 제정된 Robots Exclusion Protocol의 일부로, 웹의 초창기부터 사용되어온 표준입니다.
https://example.com/robots.txt
하지만 중요한 점을 명확히 해야 합니다: robots.txt는 권고 사항입니다. 잘 만들어진 검색 엔진 봇은 이를 존중하지만, 악의적인 봇이나 웹 스크레이퍼는 이를 무시할 수 있습니다. 따라서 robots.txt를 보안 도구로 사용해서는 안 됩니다. 민감한 데이터는 반드시 인증과 접근 제어로 보호해야 합니다.
크롤러가 robots.txt를 처리하는 방식
검색 엔진 크롤러가 웹사이트를 방문하면 가장 먼저 robots.txt를 확인합니다. 처리 순서는 다음과 같습니다:
/robots.txt요청- 파일이 없으면 → 모든 페이지 크롤링 허용
- 파일이 있으면 → 규칙에 따라 크롤링
- 자신에게 해당하는 User-agent 블록 찾기
- 가장 구체적인 규칙 적용
규칙 매칭에서 중요한 점은, Allow와 Disallow가 같은 경로에 적용되면 더 구체적인 규칙이 우선한다는 것입니다. 같은 구체성이면 Allow가 우선합니다.
문법 상세 가이드
기본 지시어
User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://example.com/sitemap.xml
Crawl-delay: 10
| 지시어 | 설명 | 예시 |
|---|---|---|
| User-agent | 대상 크롤러 지정 (*는 모든 봇) | User-agent: Googlebot |
| Disallow | 크롤링 금지 경로 | Disallow: /private/ |
| Allow | 크롤링 허용 경로 (Disallow 예외) | Allow: /private/open/ |
| Sitemap | 사이트맵 URL (절대 경로) | Sitemap: https://... |
| Crawl-delay | 크롤링 간격(초) - 일부 봇만 지원 | Crawl-delay: 10 |
와일드카드와 경로 끝 표시
robots.txt는 제한적인 패턴 매칭을 지원합니다:
*- 모든 문자열 (0개 이상)$- 경로의 끝
# 모든 .pdf 파일 차단
Disallow: /*.pdf$
# 쿼리 파라미터가 있는 URL 차단
Disallow: /*?
# 특정 파라미터 차단
Disallow: /*?sort=
Disallow: /*?filter=
# 세션 ID 포함 URL 차단
Disallow: /*sessionid
# 특정 디렉토리의 모든 PHP 파일 차단
Disallow: /scripts/*.php$
주의: 와일드카드는 경로 매칭에만 사용됩니다. 정규표현식은 지원되지 않습니다.
주요 검색 엔진 및 AI 크롤러
웹사이트에 방문하는 주요 봇들을 알아두면 유용합니다:
검색 엔진 봇
| User-agent | 서비스 | 설명 |
|---|---|---|
| Googlebot | Google 검색 | 웹 검색용 |
| Googlebot-Image | Google 이미지 | 이미지 검색용 |
| Bingbot | Bing | Microsoft 검색 |
| Yeti | Naver | 네이버 검색 |
| Baiduspider | Baidu | 중국 검색 |
| DuckDuckBot | DuckDuckGo | 프라이버시 검색 |
AI 크롤러 (2024년 이후 급증)
| User-agent | 서비스 | 설명 |
|---|---|---|
| GPTBot | OpenAI | ChatGPT 학습 데이터 |
| ChatGPT-User | OpenAI | ChatGPT 브라우징 기능 |
| CCBot | Common Crawl | 오픈 데이터셋 수집 |
| anthropic-ai | Anthropic | Claude 학습 데이터 |
| Claude-Web | Anthropic | Claude 웹 검색 |
| Google-Extended | Gemini 학습 데이터 |
AI 학습용 크롤러를 차단하려면:
# AI 학습 크롤러 차단
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
실전 예제: 상황별 설정
전체 허용 (기본)
User-agent: *
Allow: /
전체 차단 (개발/스테이징 환경)
User-agent: *
Disallow: /
일반 웹사이트
User-agent: *
Allow: /
# 관리자 영역
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /dashboard/
# 사용자 개인 영역
Disallow: /account/
Disallow: /profile/
Disallow: /my-*/
# 검색 결과 (중복 콘텐츠 방지)
Disallow: /search/
Disallow: /*?q=
Disallow: /*?s=
# 임시/개발 파일
Disallow: /tmp/
Disallow: /staging/
Disallow: /_*/
# 사이트맵
Sitemap: https://example.com/sitemap.xml
전자상거래 사이트
User-agent: *
Allow: /
# 구매 프로세스 (크롤링 불필요)
Disallow: /cart/
Disallow: /checkout/
Disallow: /order/
# 사용자 계정
Disallow: /my-account/
Disallow: /wishlist/
# 필터링/정렬된 상품 목록 (중복 방지)
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?color=
Disallow: /*?size=
Disallow: /*&
# 내부 검색
Disallow: /search/
# 가격 비교 봇 허용 (선택적)
User-agent: PriceSpider
Allow: /
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/product-sitemap.xml
블로그/미디어 사이트
User-agent: *
Allow: /
# 태그/카테고리 페이지 (선택적 - 중복 콘텐츠 우려 시)
Disallow: /tag/
Disallow: /category/page/
# 작성자 아카이브
Disallow: /author/
# 첨부 파일 페이지
Disallow: /attachment/
# 미디어 파일 직접 접근
Allow: /wp-content/uploads/
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/news-sitemap.xml
흔한 실수와 해결책
1. 슬래시 누락
# 잘못됨 - "admin"으로 시작하는 모든 경로 차단
Disallow: admin
# 올바름 - /admin/ 디렉토리만 차단
Disallow: /admin/
2. 대소문자 오류
지시어 이름은 대소문자를 구분합니다:
# 잘못됨
user-agent: *
disallow: /admin/
# 올바름
User-agent: *
Disallow: /admin/
3. CSS/JS 차단으로 인한 렌더링 문제
2015년부터 Google은 페이지를 렌더링하여 콘텐츠를 이해합니다. CSS와 JavaScript를 차단하면 Google이 페이지를 제대로 이해하지 못할 수 있습니다:
# 잘못됨 - 렌더링 리소스 차단
Disallow: /css/
Disallow: /js/
Disallow: *.css$
Disallow: *.js$
# 올바름 - 정적 리소스 허용
Allow: /css/
Allow: /js/
Allow: /images/
4. 전체 사이트 실수로 차단
# 매우 위험! 전체 사이트 차단
User-agent: *
Disallow: /
이 설정을 프로덕션에 배포하면 검색 결과에서 사라질 수 있습니다.
robots.txt vs meta robots vs X-Robots-Tag
세 가지 방법은 서로 다른 용도와 우선순위를 가집니다:
| 방법 | 위치 | 용도 | 크롤링 | 인덱싱 |
|---|---|---|---|---|
| robots.txt | 루트 디렉토리 | 크롤링 제어 | O | X |
| meta robots | HTML head | 인덱싱 제어 | X | O |
| X-Robots-Tag | HTTP 헤더 | 비HTML 리소스 | X | O |
중요: robots.txt로 차단해도 페이지가 검색 결과에 나올 수 있습니다. 다른 사이트에서 링크하면 Google은 URL을 알게 되고, 콘텐츠 없이 URL만 표시할 수 있습니다.
검색 결과에서 완전히 제거하려면:
<!-- 해당 페이지의 head에 추가 -->
<meta name="robots" content="noindex, nofollow">
robots.txt 검증 방법
Google Search Console
- Search Console 접속
- 왼쪽 메뉴에서 "설정" → "robots.txt"
- "라이브 테스트" 기능으로 URL 차단 여부 확인
명령줄에서 확인
# 현재 robots.txt 내용 확인
curl https://example.com/robots.txt
# 특정 봇 관점에서 시뮬레이션 (Python 필요)
pip install robotexclusionrulesparser
python -c "
import robotexclusionrulesparser as rerp
rp = rerp.RobotExclusionRulesParser()
rp.fetch('https://example.com/robots.txt')
print(rp.is_allowed('Googlebot', '/admin/'))
"
크롤 버짓 최적화
대규모 사이트에서는 "크롤 버짓"(Crawl Budget)이 중요합니다. 이는 Google이 사이트에 할당하는 크롤링 자원의 양입니다. robots.txt로 불필요한 페이지를 차단하면 중요한 페이지가 더 자주 크롤링됩니다.
크롤 버짓을 낭비하는 페이지:
- 필터링/정렬된 상품 목록
- 세션 ID가 포함된 URL
- 무한 캘린더
- 내부 검색 결과
- 프린트용 페이지
Toolypet Robots.txt Generator
복잡한 robots.txt도 쉽게 생성할 수 있습니다:
- 차단할 경로 패턴 선택
- 특정 봇 차단 설정
- 사이트맵 URL 입력
- 미리보기로 확인
- 완성된 파일 다운로드
올바른 robots.txt로 크롤링 예산을 효율적으로 사용하고, 중요한 콘텐츠가 검색 결과에 잘 노출되도록 하세요.