Robots.txt: 2026년 SEO 완벽 가이드
· 12분 읽기
목차
Robots.txt는 웹사이트의 루트 디렉토리에 위치한 간단한 텍스트 파일로, 검색 엔진 크롤러에게 어떤 페이지에 접근할 수 있고 어떤 페이지를 건너뛰어야 하는지 알려줍니다. 단순한 텍스트 파일임에도 불구하고, 잘못 구성된 robots.txt는 SEO 노력을 완전히 망칠 수 있습니다 — 중요한 페이지를 실수로 색인에서 차단하거나, 관련 없는 콘텐츠에 귀중한 크롤 예산을 낭비하거나, 비공개로 유지하려던 민감한 영역을 노출시킬 수 있습니다.
이 종합 가이드는 기본 구문부터 고급 최적화 기법까지 robots.txt 파일에 대해 알아야 할 모든 것을 다룹니다. 소규모 블로그를 관리하든 수백만 페이지를 가진 대규모 전자상거래 사이트를 관리하든, robots.txt를 이해하는 것은 효과적인 SEO를 위해 필수적입니다.
🛠️ 빠른 도구: 지금 바로 robots.txt 파일이 필요하신가요? Robots.txt 생성기를 사용하여 몇 초 만에 올바른 형식의 파일을 만드세요.
Robots.txt란 무엇인가?
robots.txt 파일은 yoursite.com/robots.txt에 위치하며 1994년에 확립된 표준인 로봇 배제 프로토콜을 따릅니다. 검색 엔진 크롤러가 웹사이트를 방문할 때 가장 먼저 하는 일은 이 파일을 확인하는 것입니다. 웹사이트 현관문에 게시된 안내문이라고 생각하시면 됩니다.
이 파일에는 특정 크롤러(또는 모든 크롤러)에게 어떤 URL 경로에 접근할 수 있고 어떤 경로를 피해야 하는지 알려주는 지시문이 포함되어 있습니다. robots.txt는 권고사항이지 필수사항이 아니라는 점을 이해하는 것이 중요합니다. Google, Bing 및 기타 주요 검색 엔진의 정상적인 크롤러는 이러한 지시문을 존중하지만, 악의적인 봇이나 스크레이퍼는 완전히 무시할 수 있습니다.
robots.txt가 할 수 있는 것과 할 수 없는 것은 다음과 같습니다:
| Robots.txt가 할 수 있는 것 | Robots.txt가 할 수 없는 것 |
|---|---|
| 크롤러가 접근하는 페이지 제어 | 검색 결과에 페이지가 나타나는 것 방지 |
| 크롤 예산 할당 관리 | 비밀번호 보호 제공 |
| 사이트맵 위치 지정 | 악의적인 봇 차단 (무시함) |
| 특정 봇에 대한 크롤 지연 설정 | 이미 색인된 페이지 제거 |
전문가 팁: 검색 결과에서 콘텐츠를 제거해야 하는 경우, noindex 메타 태그나 X-Robots-Tag HTTP 헤더를 대신 사용하세요. robots.txt로 차단하면 실제로 크롤러가 noindex 지시문을 볼 수 없게 되어 역효과가 날 수 있습니다.
Robots.txt 작동 원리
크롤러 워크플로우를 이해하면 robots.txt를 효과적으로 사용하는 데 도움이 됩니다. 검색 엔진 봇이 사이트를 방문할 때 정확히 어떤 일이 일어나는지 살펴보겠습니다:
- 초기 요청: 크롤러는 다른 페이지에 접근하기 전에
/robots.txt를 가져오려고 시도합니다 - 파일 파싱: 파일을 찾으면 크롤러는 자신의 user-agent와 관련된 지시문을 읽고 파싱합니다
- 규칙 적용: 크롤러는 가장 구체적으로 일치하는 규칙을 적용하여 어떤 URL에 접근할 수 있는지 결정합니다
- 크롤링 시작: 크롤러는 crawl-delay 지시문을 존중하면서 허용된 페이지를 가져오기 시작합니다
- 캐시 기간: 대부분의 크롤러는 업데이트를 확인하기 전에 24시간 동안 robots.txt를 캐시합니다
robots.txt 파일이 404 오류를 반환하면 크롤러는 모든 것에 접근할 수 있는 권한이 있다고 가정합니다. 5xx 서버 오류를 반환하면 일반적으로 크롤링을 일시적으로 중지하고 나중에 다시 시도합니다.
User-Agent 매칭 우선순위
여러 user-agent 블록이 단일 크롤러에 적용될 수 있는 경우, 검색 엔진은 특정 우선순위를 따릅니다. 예를 들어 Google은 가장 구체적인 user-agent 일치를 사용합니다. User-agent: *와 User-agent: Googlebot이 모두 있는 경우, Googlebot은 Googlebot 전용 규칙만 따릅니다.
단일 user-agent 블록 내에서 Allow와 Disallow 규칙이 모두 URL에 적용될 수 있는 경우, 가장 구체적인 규칙이 우선합니다. 구체성은 경로의 길이로 결정됩니다 — 더 긴 경로가 더 구체적입니다.
구문 규칙 및 지시문
Robots.txt는 간단하지만 정확한 구문을 사용합니다. 모든 문자가 중요하며, 작은 실수가 큰 결과를 초래할 수 있습니다. 각 지시문과 올바른 사용 방법을 자세히 살펴보겠습니다.
기본 구조
# 주석은 해시 기호로 시작합니다
User-agent: *
Disallow: /admin/
Disallow: /tmp/
Allow: /admin/public/
User-agent: Googlebot
Disallow: /private/
Crawl-delay: 10
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-images.xml
핵심 지시문 설명
User-agent: 다음 규칙이 적용되는 크롤러를 지정합니다. 모든 크롤러를 대상으로 하려면 *를 와일드카드로 사용하세요. 일반적인 user-agent는 다음과 같습니다:
Googlebot— Google의 메인 크롤러Googlebot-Image— Google의 이미지 크롤러Bingbot— Microsoft Bing의 크롤러Slurp— Yahoo의 크롤러 (현재 Bing 사용)DuckDuckBot— DuckDuckGo의 크롤러Baiduspider— Baidu의 크롤러 (중국 검색 엔진)
Disallow: 특정 URL 경로에 대한 접근을 차단합니다. 경로는 대소문자를 구분하며 /로 시작해야 합니다. 빈 Disallow (Disallow:)는 모든 것을 허용한다는 의미입니다.
Allow: 차단된 경로 내에서 예외를 만듭니다. 디렉토리를 차단하되 그 안의 특정 파일이나 하위 디렉토리를 허용하고 싶을 때 특히 유용합니다.
Sitemap: 크롤러에게 XML 사이트맵의 위치를 알려줍니다. 여러 Sitemap 지시문을 포함할 수 있습니다. 다양한 콘텐츠 유형에 대해 여러 사이트맵이 있는 사이트에 특히 유용합니다.
Crawl-delay: 크롤러가 요청 사이에 대기해야 하는 초 수를 지정합니다. Googlebot은 이 지시문을 무시한다는 점에 유의하세요 — 대신 Google Search Console을 사용하여 크롤 속도를 조정하세요.
와일드카드를 사용한 패턴 매칭
최신 robots.txt는 패턴 매칭을 위한 두 가지 특수 문자를 지원합니다:
| 문자 | 의미 | 예시 | 일치하는 것 |
|---|---|---|---|
* |
모든 문자 시퀀스와 일치 | Disallow: /*.pdf$ |
사이트 어디에나 있는 모든 PDF 파일 |
$ |
URL 끝에 고정 | Disallow: /private$ |
/private는 일치하지만 /private/page는 불일치 |
실용적인 패턴 예시
# 쿼리 매개변수가 있는 모든 URL 차단
Disallow: /*?
# 특정 매개변수가 있는 모든 URL 차단
Disallow: /*?sessionid=
# 모든 PDF 파일 차단
Disallow: /*.pdf$
# 특정 확장자로 끝나는 모든 URL 차단
Disallow: /*.php$
# 특정 문자열을 포함하는 URL 차단
Disallow: /*sort=
# 여러 파일 유형 차단
Disallow: /*.json$
Disallow: /*.xml$
Disallow: /*.txt$
빠른 팁: 프로덕션에 배포하기 전에 Robots.txt 테스터로 패턴 매칭을 테스트하여 와일드카드가 예상대로 작동하는지 확인하세요.
일반적인 사용 사례 및 규칙
robots.txt가 매우 유용한 실제 시나리오를 살펴보겠습니다. 이 예시들은 웹사이트의 크롤 지시문을 관리할 때 접하게 될 가장 일반적인 상황을 다룹니다.
관리 영역 차단
모든 CMS에는 검색 결과에 절대 나타나서는 안 되는 관리 영역이 있습니다. 이러한 페이지는 크롤 예산을 낭비하고 사이트 인프라에 대한 민감한 정보를 노출할 수 있습니다.
# WordPress
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Allow: /wp-content/uploads/
# Drupal
Disallow: /admin/
Disallow: /user/
Disallow: /node/add/
# Magento
Disallow: /admin/
Disallow: /downloader/
Disallow: /customer/account/
중복 콘텐츠 문제 방지
전자상거래 사이트와 블로그는 정렬, 필터링, 페이지네이션을 통해 중복 콘텐츠를 생성하는 경우가 많습니다. 이러한 변형을 차단하여 랭킹 신호를 통합하세요.
# 정렬 및 필터링 매개변수 차단
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?color=
Disallow: /*?size=
# 검색 결과 페이지 차단
Disallow: /search
Disallow: /?s=
Disallow: /search-results/
# 태그 및 카테고리 페이지네이션 차단
Disallow: /tag/*/page/
Disallow: /category/*/page/
# 인쇄 버전 차단
Disallow: /*/print$
Disallow: /*?print=
스테이징 및 개발 환경 관리
스테이징 사이트가 공개적으로 접근 가능한 경우(다른 하위 도메인이더라도), 중복 콘텐츠 페널티를 피하기 위해 반드시 색인에서 차단해야 합니다.
# 전체 스테이징 환경 차단
User-agent: *
Disallow: /
# 또는 스테이징 하위 디렉토리 차단
Disallow: /staging/
Disallow: /dev/
Disallow: /test/
렌더링을 위한 중요 리소스 허용
Google은 페이지를 올바르게 렌더링하고 이해하기 위해 CSS 및 JavaScript 파일에 접근해야 합니다. 특별한 이유가 없는 한 이러한 리소스를 절대 차단하지 마세요.
User-agent: *
# wp-content의 대부분 차단
Disallow: /wp-content/
# 하지만 중요한 렌더링 리소스는 허용
Allow: /wp-content/uploads/
Allow: /wp-content/themes/*.css
Allow: /wp-content/themes/*.js
Allow: /wp-content/plugins/*.css
Allow: /wp-content/plugins/*.js
사이트맵 선언
항상 robots.txt에 사이트맵 위치를 포함하세요. 이는 Search Console을 통해 사이트맵을 제출한 경우에도 크롤러가 콘텐츠를 더 효율적으로 발견하는 데 도움이 됩니다.
# 단일 사이트맵
Sitemap: https://example.com/sitemap.xml
# 다양한 콘텐츠 유형에 대한 여러 사이트맵
Sitemap: https://example.com/sitemap-pages.xml
Sitemap: https://example.com/sitemap-posts.xml
Sitemap: https://example.com/sitemap-products.xml
Sitemap: https://example.com/sitemap-images.xml
전문가 팁: 사이트맵 생성기를 사용하여 robots.txt 구성을 보완하는 포괄적인 XML 사이트맵을 만드세요.
크롤 예산 최적화 이해하기
크롤 예산은 검색 엔진 크롤러가 특정 기간 동안 사이트에서 접근할 페이지 수를 의미합니다. 1,000페이지 미만의 소규모 사이트의 경우 크롤 예산은 거의 문제가 되지 않습니다 — Google은 전체 사이트를 정기적으로 쉽게 크롤할 수 있습니다.
그러나 수만 또는 수백만 페이지가 있는 대규모 사이트의 경우 크롤 예산 최적화