Toolypet
Back to Blog
SEO

Robots.txt 완벽 가이드: 검색 엔진 크롤러 제어하기

robots.txt 파일의 작성법과 검색 엔진 크롤러를 효과적으로 관리하는 방법을 알아봅니다.

Toolypet Team6 min read
Robots.txt 완벽 가이드: 검색 엔진 크롤러 제어하기

Robots.txt의 역할과 한계

robots.txt는 웹사이트의 루트 디렉토리에 위치하는 텍스트 파일로, 검색 엔진 크롤러에게 어떤 페이지를 크롤링할지 안내합니다. 1994년에 제정된 Robots Exclusion Protocol의 일부로, 웹의 초창기부터 사용되어온 표준입니다.

https://example.com/robots.txt

하지만 중요한 점을 명확히 해야 합니다: robots.txt는 권고 사항입니다. 잘 만들어진 검색 엔진 봇은 이를 존중하지만, 악의적인 봇이나 웹 스크레이퍼는 이를 무시할 수 있습니다. 따라서 robots.txt를 보안 도구로 사용해서는 안 됩니다. 민감한 데이터는 반드시 인증과 접근 제어로 보호해야 합니다.

크롤러가 robots.txt를 처리하는 방식

검색 엔진 크롤러가 웹사이트를 방문하면 가장 먼저 robots.txt를 확인합니다. 처리 순서는 다음과 같습니다:

  1. /robots.txt 요청
  2. 파일이 없으면 → 모든 페이지 크롤링 허용
  3. 파일이 있으면 → 규칙에 따라 크롤링
  4. 자신에게 해당하는 User-agent 블록 찾기
  5. 가장 구체적인 규칙 적용

규칙 매칭에서 중요한 점은, 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서비스설명
GooglebotGoogle 검색웹 검색용
Googlebot-ImageGoogle 이미지이미지 검색용
BingbotBingMicrosoft 검색
YetiNaver네이버 검색
BaiduspiderBaidu중국 검색
DuckDuckBotDuckDuckGo프라이버시 검색

AI 크롤러 (2024년 이후 급증)

User-agent서비스설명
GPTBotOpenAIChatGPT 학습 데이터
ChatGPT-UserOpenAIChatGPT 브라우징 기능
CCBotCommon Crawl오픈 데이터셋 수집
anthropic-aiAnthropicClaude 학습 데이터
Claude-WebAnthropicClaude 웹 검색
Google-ExtendedGoogleGemini 학습 데이터

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루트 디렉토리크롤링 제어OX
meta robotsHTML head인덱싱 제어XO
X-Robots-TagHTTP 헤더비HTML 리소스XO

중요: robots.txt로 차단해도 페이지가 검색 결과에 나올 수 있습니다. 다른 사이트에서 링크하면 Google은 URL을 알게 되고, 콘텐츠 없이 URL만 표시할 수 있습니다.

검색 결과에서 완전히 제거하려면:

<!-- 해당 페이지의 head에 추가 -->
<meta name="robots" content="noindex, nofollow">

robots.txt 검증 방법

Google Search Console

  1. Search Console 접속
  2. 왼쪽 메뉴에서 "설정" → "robots.txt"
  3. "라이브 테스트" 기능으로 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도 쉽게 생성할 수 있습니다:

  1. 차단할 경로 패턴 선택
  2. 특정 봇 차단 설정
  3. 사이트맵 URL 입력
  4. 미리보기로 확인
  5. 완성된 파일 다운로드

올바른 robots.txt로 크롤링 예산을 효율적으로 사용하고, 중요한 콘텐츠가 검색 결과에 잘 노출되도록 하세요.

SEORobots.txtCrawlerSearch Engine