Robots.txt 생성기

믿고 쓸 수 있는 robots.txt를 만드세요. 규칙을 입력하는 즉시 하나하나 설명하고, 완성된 파일은 우리 robots.txt 테스터가 RFC 9309와 Google 자체의 해석에 따라 다시 읽으며, 공개하기 전에 어떤 크롤러와 어떤 경로에 대해서든 판정을 바로 보여 줍니다.

WordPress, Shopify, Next.js, Google 문서를 바탕으로 만든 프리셋 · 각 운영사가 문서로 밝힌 크롤러를 목적별로 · 판정을 내린 규칙과 그 줄 · 브라우저에서 작성하며 아무것도 업로드하지 않음
브라우저에서 작성하고 검사

파일은 호스트와 프로토콜마다 하나씩입니다. www.example.com과 example.com에는 각각 따로 파일이 필요합니다.

프리셋에서 시작
하는 일
  • 모든 크롤러가 사이트의 모든 URL을 가져올 수 있습니다.
  • Sitemap: 줄이 크롤러에게 사이트맵의 위치를 알려 줍니다.
하지 않는 일
  • 아무것도 비공개로 지켜 주지 않습니다. robots.txt는 공개 파일이며, 잠금장치가 아니라 요청일 뿐입니다.
  • 검색엔진에 페이지 색인을 요청하지 않습니다. 크롤링과 색인은 별개입니다.

출처: RFC 9309(2026년 10월 26일에 확인)

규칙

그 밖의 모든 크롤러

User-agent: *

전용 그룹이 없는 모든 크롤러가 읽습니다.

  • 사이트 전체를 허용합니다.
Google은 무시하고, Bing은 읽습니다.

목적별 크롤러

알려진 크롤러마다 적용할 설정을 고르세요. 전용 그룹이 있는 크롤러는 그 그룹만 읽습니다.

검색엔진8

검색 색인을 만들기 위해 크롤링합니다. 차단된 페이지도 다른 곳의 링크를 통해 목록에 오를 수 있지만, 그 페이지에서 읽은 내용은 하나도 없습니다.

  • GooglebotGoogle예(운영사 설명)
  • Storebot-GoogleGoogle예(운영사 설명)
  • BingbotMicrosoft예(운영사 설명)
  • ApplebotApple예(운영사 설명)
  • Amzn-SearchBotAmazon예(운영사 설명)
  • DuckDuckBotDuckDuckGo예(운영사 설명)
  • YandexBotYandex예(운영사 설명)
  • BaiduspiderBaidu운영사가 밝히지 않음
AI 학습6

모델 학습용으로 페이지를 수집합니다. 토큰이 따로 있어서, 검색 결과에는 계속 나타나면서 학습만 거부할 수 있습니다.

  • Google-ExtendedGoogle토큰 전용, 요청에는 보내지 않음
  • GPTBotOpenAI예(운영사 설명)
  • ClaudeBotAnthropic예(운영사 설명)
  • Applebot-ExtendedApple토큰 전용, 요청에는 보내지 않음
  • meta-externalagentMeta예(운영사 설명)
  • AmazonbotAmazon예(운영사 설명)
AI 답변4

질문에 답하기 위해 페이지를 가져오고, 사이트로 돌아오는 링크를 함께 보여 줍니다.

  • OAI-SearchBotOpenAI예(운영사 설명)
  • Claude-SearchBotAnthropic예(운영사 설명)
  • PerplexityBotPerplexity예(운영사 설명)
  • meta-webindexerMeta예(운영사 설명)
사용자 요청으로 가져옴5

사람이 요청했기 때문에 페이지 하나를 가져옵니다. 그래서 robots.txt를 무시할 수 있다고 밝힌 운영사도 있습니다.

이 크롤러를 거부하면 크롤링이 아니라 사람을 거부하게 됩니다. 누군가 AI 어시스턴트에게 내 페이지를 열어 달라고 해도, 파일을 따르는 어시스턴트는 그 사람을 위해 페이지를 읽지 않습니다. 거부하려는 것이 학습이라면 위의 학습용 크롤러를 거부하세요.

  • ChatGPT-UserOpenAI항상은 아님(운영사 설명)
  • Claude-UserAnthropic예(운영사 설명)
  • Perplexity-UserPerplexity항상은 아님(운영사 설명)
  • meta-externalfetcherMeta항상은 아님(운영사 설명)
  • Amzn-UserAmazon항상은 아님(운영사 설명)
미리보기, 광고 등8

링크 미리보기, 사이트 소유자 도구, 광고 확인, 아카이브, 그리고 운영사가 다른 역할을 밝혔거나 아무것도 밝히지 않은 크롤러입니다.

  • Google-InspectionToolGoogle예(운영사 설명)
  • GoogleOtherGoogle예(운영사 설명)
  • AdsBot-GoogleGoogle예(운영사 설명)
  • OAI-AdsBotOpenAI운영사가 밝히지 않음
  • facebookexternalhitMeta항상은 아님(운영사 설명)
  • meta-externaladsMeta예(운영사 설명)
  • BytespiderByteDance운영사가 밝히지 않음
  • CCBotCommon Crawl예(운영사 설명)

사이트맵

  • 위에 사이트를 입력하면 자동으로 채워집니다.

파일

경고 1개

내 robots.txt/robots.txt

2줄
  1. User-agent: *
  2. Allow: /

오류경고참고500 KiB 중 23 B

검사 결과

경고 1개

  • Sitemap 줄이 없습니다경고

    해결 방법 파일에서 가장 손쉬운 줄이고, 모든 크롤러가 읽습니다. 사이트맵의 전체 주소와 함께 Sitemap:을 추가하세요.

공개 전 테스트

크롤러와 경로를 고르세요. 판정, 그 판정을 내린 규칙, 크롤러가 읽는 그룹은 robots.txt 테스터 자체의 매처가 결정합니다.

경로 예시
크롤러
  • 이 크롤러는 이 URL을 요청할 수 있습니다.

    선택된 그룹

    User-agent: *1번째 줄에서 시작

    이 크롤러를 지정한 그룹이 없으므로, * 그룹이 적용됩니다.

    판정 근거

    Allow: /2번째 줄

    같은 규칙이 함께 잡아내는 경로

    /any-page

    비교 대상

    /

    비교하는 것은 경로와 쿼리뿐이며, 퍼센트 인코딩을 거친 뒤 바이트 단위로 비교합니다. 호스트, 스킴, 프래그먼트는 규칙의 대상이 아닙니다.

robots.txt 파일 만드는 방법

규칙을 작성해 robots.txt라는 이름의 UTF-8 일반 텍스트 파일로 저장한 뒤, 사이트의 최상위에 올려 https://example.com/robots.txt 주소에서 응답하게 하세요. 제출할 것은 없습니다. 크롤러가 알아서 그 주소를 요청합니다.

Google은 이를 세 문장으로 정리합니다. “파일 이름은 robots.txt로 지정해야 합니다. 사이트에는 robots.txt 파일이 하나만 있어야 합니다. robots.txt 파일은 파일이 적용되는 사이트 호스트의 루트에 있어야 합니다.” 파일은 “UTF-8로 인코딩된 텍스트 파일”이어야 하며, “Google 크롤러가 자동으로 robots.txt 파일을 찾아 사용하기 시작합니다.”

위의 생성기는 프리셋에서 시작해 입력하는 규칙마다 설명하고, 복사하기 전에 우리 robots.txt 테스터의 파서와 매처로 결과를 다시 읽습니다. 다운로드한 파일의 이름은 robots.txt이며, 바이트 순서 표시(BOM) 없는 UTF-8에 줄바꿈은 LF만 쓰고, 요청하지 않은 날짜나 주석은 넣지 않습니다.

규칙에서 작동하는 robots.txt까지 네 단계
  1. 1규칙 작성프리셋에서 시작해 사이트에 필요한 그룹과 경로를 추가합니다.
  2. 2robots.txt로 저장일반 텍스트, UTF-8, 바이트 순서 표시(BOM) 없음.
  3. 3루트에 업로드호스트의 최상위에서 응답해야 합니다:https://example.com/robots.txt
  4. 4테스트공개 전에는 여기서, 그다음에는 robots.txt 테스터로 공개된 파일을.

제출 단계는 없습니다. Google 크롤러가 알아서 파일을 찾습니다.

Robots.txt 생성기 화면: WordPress 프리셋, 규칙별 설명, 줄 번호가 붙은 파일과 검사 결과Robots.txt 생성기 화면: WordPress 프리셋, 규칙별 설명, 줄 번호가 붙은 파일과 검사 결과프리셋이 하는 일그리고 하지 않는 일도 알려 줍니다. 이 프리셋 가운데 어느 것도 페이지를 Google에서 빼 주지 않으며, 프리셋마다 그 사실을 밝힙니다.규칙별 설명규칙이 차단하는 경로와 놓치는 경로를 모든 판정을 내리는 바로 그 매처로 보여 주고, 예외를 만드는 더 긴 규칙도 알려 줍니다.파일과 검사 결과줄 번호가 붙은 파일을, 복사하기 전에 robots.txt 테스터 자체의 감사로 다시 읽습니다.판정크롤러와 경로를 고르면 허용인지 차단인지, 판정을 내린 규칙과 그 줄, 크롤러가 읽는 그룹을 보여 줍니다.
생성기에서 WordPress 프리셋을 고른 모습입니다. 프리셋이 하는 일과 하지 않는 일, 매처로 설명한 각 규칙, 공개될 그대로의 파일, 그리고 크롤러와 경로에 대한 판정이 보입니다. 번호를 선택하면 각 부분이 무엇을 보여 주는지 확인할 수 있습니다.

robots.txt 파일에 들어가는 내용, 한 줄씩

그룹과 Sitemap 줄입니다. 그룹은 크롤러 이름을 적은 User-agent 줄 하나 이상으로 시작하고, 그 뒤에 그 크롤러들이 따르는 Allow와 Disallow 규칙이 이어집니다. Sitemap 줄은 어느 그룹에도 속하지 않고 따로 섭니다.

RFC 9309는 그룹을 “하나 이상의 user-agent 줄과 그 뒤에 이어지는 하나 이상의 규칙”으로 정의하며, 크롤러는 정확히 하나의 그룹을 따릅니다. 자신의 제품 토큰을 지정한 그룹, 그런 그룹이 없으면 * 그룹입니다. Google이 읽는 필드는 user-agent, allow, disallow, sitemap 네 가지뿐입니다.

필드 이름은 대소문자를 구분하지 않지만, 경로는 구분합니다. Google 자체의 예시에서 disallow: /file.asp는 /file.asp에 적용되지만 /FILE.asp에는 “적용되지 않습니다”. Sitemap: 줄은 프로토콜과 호스트를 포함한 전체 주소여야 하며, 이 생성기는 다른 형태는 모두 거부하고 그 이유를 알려 줍니다.

robots.txt, 한 줄씩
robots.txt
  1. 1User-agent: *전용 그룹이 없는 모든 크롤러를 위한 그룹을 시작
  2. 2Disallow: /cart/이 크롤러들이 가져가면 안 되는 경로
  3. 3Allow: /cart/help예외: Disallow보다 길어서 이깁니다
  4. 4
  5. 5User-agent: GPTBot크롤러 두 개를 지정하는 그룹을 시작
  6. 6User-agent: ClaudeBot
  7. 7Disallow: /둘 다 사이트 전체를 거부당합니다
  8. 8
  9. 9Sitemap: https://www.example.org/sitemap.xml모든 그룹 밖: 전체 주소

Allow와 Disallow, *와 $: 규칙이 일치하는 방식

하나의 URL에 규칙이 여러 개 일치하면, 종류와 상관없이 경로가 가장 긴 규칙이 이기고, 길이가 같으면 Allow가 이깁니다. *는 임의의 문자열을, $는 URL의 끝을 나타내며, 경로의 그 밖의 문자에는 특별한 의미가 없습니다.

RFC 9309: “가장 구체적인 일치를 사용해야 한다(MUST). 가장 구체적인 일치란 옥텟 수가 가장 많은 일치를 말한다”, 그리고 “allow 규칙과 disallow 규칙이 동등하면 allow 규칙을 사용해야 한다(SHOULD).” WordPress 자체의 파일이 바로 이렇게 동작합니다. Disallow: /wp-admin/ 줄이 폴더를 닫고, 더 긴 Allow: /wp-admin/admin-ajax.php 줄이 그 안의 파일 하나를 엽니다.

$가 없는 규칙은 접두어 일치이므로, Disallow: /admin은 /administrator도 차단합니다. 폴더를 뜻한다면 슬래시를 붙이세요(/admin/). 위의 편집기는 규칙마다 그 규칙이 잡아내는 경로와 잡아내지 않는 경로 몇 개를 모든 판정을 내리는 매처로 보여 주며, 다른 규칙에 늘 지는 규칙도 표시합니다.

*와 $, 각 패턴이 실제로 잡아내는 것
패턴일치불일치
/admin/admin/ · /administrator · /admin-tools/wp-admin
/admin//admin/users/administrator
/*.pdf$/files/report.pdf/report.pdf?v=2
/*?/search?q=x/search

?, ., [, +는 평범한 문자입니다. robots.txt에는 정규 표현식이 없습니다.

한 URL에 규칙 두 개가 일치: 경로가 긴 쪽이 이깁니다
/admin/report.pdf
  • Disallow: /admin/7자
  • Allow: /admin/report.pdf17자

Allow가 이깁니다. 경로와 더 많이 일치하기 때문입니다.

완전히 같은 길이
Disallow: /files/7자Allow: /files/7자

길이가 같으므로 Allow가 이깁니다. Google의 표현으로는 “가장 제한이 적은 규칙”입니다.

예시 파일은 가상의 사이트 www.example.org의 것입니다. 실제 robots.txt를 고장 난 예로 보여 주지 않습니다.

WordPress, Shopify, Next.js의 robots.txt

세 플랫폼 모두 이미 robots.txt를 제공하며, 위의 프리셋은 각 플랫폼 자체 문서가 설명하는 내용을 씁니다. WordPress는 관리자 영역을 거부하되 admin-ajax.php는 허용하고, Shopify는 장바구니, 결제, 필터링하거나 정렬한 컬렉션을 거부하며, Next.js는 app/robots.txt에 넣은 파일을 제공합니다.

WordPress는 파일을 코드로, do_robots() 안에서 씁니다. User-agent: *, 관리자 경로에 대한 Disallow, admin-ajax.php에 대한 Allow, 그리고 공개 사이트라면 WordPress 5.5부터 /wp-sitemap.xml을 가리키는 Sitemap: 줄입니다. “검색 엔진이 이 사이트를 검색하는 것을 차단”을 켜면 WordPress 5.3 이상은 더 이상 Disallow: /를 쓰지 않고, 대신 robots meta 태그를 씁니다.

Shopify는 기본 파일이 “대부분의 스토어에 적합하다”고 말합니다. 업로드할 파일은 없으며, 바꾸려면 테마의 robots.txt.liquid 템플릿을 편집해야 하는데, Shopify는 이를 “지원되지 않는 사용자 지정”이라고 부릅니다. Next.js는 app/robots.txt를 쓴 그대로 제공하거나, app/robots.ts로 파일을 만듭니다.

WordPress, Shopify, Next.js가 제공하는 파일과, 그것을 바꾸는 곳
WordPress
  1. 1User-agent: *
  2. 2Allow: /wp-admin/admin-ajax.php
  3. 3Disallow: /wp-admin/
  4. 4
  5. 5Sitemap: https://example.com/wp-sitemap.xml

WordPress가 직접 작성합니다. 플러그인이나 robots_txt 필터로 바꿉니다.

Shopify
  1. 1User-agent: *
  2. 2Allow: /
  3. 3Disallow: /admin
  4. 4Disallow: /cart/
  5. 5Disallow: /checkout
  6. 6Disallow: /checkouts/
  7. 7Disallow: /account
  8. 8Disallow: /orders
  9. 9Disallow: /collections/*+*
  10. 10Disallow: /collections/*sort_by*
  11. 11
  12. 12Sitemap: https://example.com/sitemap.xml

Shopify의 기본 파일입니다. 테마의 robots.txt.liquid 템플릿에서 바꿉니다.

Next.js
  1. 1User-agent: *
  2. 2Allow: /
  3. 3
  4. 4Sitemap: https://example.com/sitemap.xml

app/robots.txt에 둔 내 파일 또는 app/robots.ts가 /robots.txt에서 제공됩니다.

각 파일은 같은 이름의 프리셋이 example.com에 대해 쓰는 내용입니다.

AI 크롤러 차단: 실제로 효과가 있는 방법

크롤러 이름을 적은 그룹 아래에 Disallow: /를 두면, 운영사가 robots.txt를 따른다고 밝힌 모든 크롤러에 효과가 있고, 그런 크롤러에만 효과가 있습니다. 크롤러가 존중해 주는 요청일 뿐 잠금장치가 아니므로, 파일을 무시하는 크롤러는 여전히 모든 페이지를 가져갈 수 있습니다.

대부분의 AI 회사는 크롤러를 여러 개 운영하므로, 역할별로 정하세요. GPTBot이나 ClaudeBot 같은 학습용 크롤러를 거부하면 모델용으로 페이지를 수집하는 크롤러를 거부하는 것이고, OAI-SearchBot이나 PerplexityBot 같은 답변용 크롤러를 거부하면 그 어시스턴트가 보여 주는 링크에서도 빠집니다. Google의 학습용 토큰은 Googlebot이 아닙니다. “Google-Extended는 Google 검색에 사이트가 포함될지 여부에 영향을 미치지 않으며 Google 검색에서 순위 결정 신호로 사용되지도 않습니다.”

세 번째 종류는 다릅니다. ChatGPT-User, Claude-User, Perplexity-User, Amzn-User는 사람이 어시스턴트에게 페이지를 열어 달라고 요청했기 때문에 그 페이지 하나를 가져옵니다. 그래서 이들을 거부하면 그 사람을 거부하는 것이 되며, 일부 운영사는 이런 크롤러가 어차피 robots.txt를 무시할 수 있다고 말합니다. 위의 크롤러 목록이 이들을 별도의 섹션에 두는 것은 그 때문입니다.

AI 크롤러의 세 가지 역할과, 각 운영사가 robots.txt에 대해 밝힌 내용
운영사학습AI 답변사용자 요청
OpenAIGPTBot준수OAI-SearchBot준수ChatGPT-User무시할 수 있음
AnthropicClaudeBot준수Claude-SearchBot준수Claude-User준수
Perplexity해당 크롤러 없음PerplexityBot준수Perplexity-User무시할 수 있음
GoogleGoogle-Extended토큰만해당 크롤러 없음해당 크롤러 없음
AppleApplebot-Extended토큰만해당 크롤러 없음해당 크롤러 없음
Metameta-externalagent준수meta-webindexer준수meta-externalfetcher무시할 수 있음
AmazonAmazonbot준수해당 크롤러 없음Amzn-User무시할 수 있음
  • 학습모델 학습용으로 페이지를 수집합니다.
  • AI 답변질문에 답하기 위해 페이지를 가져오며, 보통 사이트로 돌아오는 링크를 함께 답니다.
  • 사용자 요청누군가 요청해서 페이지 하나를 가져옵니다. 이 크롤러는 robots.txt를 무시할 수 있다고 밝힌 운영사도 있습니다.

robots.txt로는 페이지가 Google에서 빠지지 않습니다: noindex를 쓰세요

robots.txt는 크롤러에게 페이지를 가져가지 말라고 요청할 뿐, 검색엔진에게 목록에 올리지 말라고 요청하지 않습니다. 다른 페이지가 링크하면 Google은 “여전히 URL의 색인을 생성하여 스니펫 없이 검색 결과에 표시할 수 있습니다”. 페이지를 빼려면 noindex를 쓰고, 그 태그를 읽을 수 있도록 페이지는 크롤링할 수 있게 두세요.

Search Console은 이 상태를 “robots.txt로 인해 차단되었으나 색인이 생성됨”이라고 부릅니다. 또 Google은 분명히 밝힙니다. “noindex 규칙이 효과적으로 작동하려면 페이지 또는 리소스가 robots.txt 파일로 차단되어서는 안 되며…” 크롤러가 페이지를 가져오지 않으므로, 차단된 페이지에 있는 noindex는 결코 읽히지 않습니다.

위의 모든 프리셋이 하지 않는 일을 밝히는 것은 그 때문입니다. 스테이징 프리셋의 Disallow: /는 규칙을 지키는 크롤러를 막아 주지만, 어디에서든 링크된 스테이징 URL은 여전히 목록에 오를 수 있습니다. 스테이징은 비밀번호로 보호하고, 그 줄을 운영 사이트에 절대 내보내지 마세요.

차단된 페이지가 Google에 여전히 나타나는 이유와, 그 noindex가 읽히지 않는 이유
  1. 크롤러
  2. robots.txt를 읽음
  3. URL이 차단되어 있음
  4. 페이지를 가져오지 않음
페이지 자체<meta name="robots" content="noindex">읽히지 않음
검색 색인설명 없이 URL만
Search Console의 표시robots.txt로 인해 차단되었으나 색인이 생성됨

페이지를 빼려면: 크롤러를 들여보내고 noindex를 쓰거나, 로그인을 요구하세요.

robots.txt 파일을 두어야 하는 위치

적용할 호스트의 루트에 /robots.txt로, 호스트와 프로토콜마다 하나씩 둡니다. https://example.com/robots.txt는 https://www.example.com이나 https://shop.example.com에 대해 아무것도 정하지 않습니다. 각각 따로 파일이 필요하며, 폴더 안의 robots.txt는 결코 읽히지 않습니다.

Google: “robots.txt 파일은 지원되는 프로토콜에서 사이트의 최상위 디렉터리에 있어야 합니다.” Search Console의 robots.txt 보고서는 속성의 상위 20개 호스트의 파일을 각각 따로 보여 주며, HTTP와 HTTPS도 따로 셉니다.

생성기 맨 위에 사이트를 입력하면 파일이 응답해야 할 정확한 주소를 알려 주고, 그 호스트에 맞는 Sitemap: 줄을 채우며, robots.txt 테스터로 가는 링크를 보여 줍니다. 파일을 올린 뒤에는 테스터가 실제로 공개된 파일을 읽습니다.

호스트와 프로토콜마다 robots.txt 하나
이 파일적용 대상
https://example.com/robots.txthttps://example.com의 모든 URL
https://www.example.com/robots.txtwww.example.com만: 별도의 호스트
http://example.com/robots.txthttp:// 사이트만: 별도의 프로토콜
https://shop.example.com/robots.txtshop.example.com만
https://example.com/blog/robots.txt없음: 폴더 안의 robots.txt는 결코 읽히지 않습니다

Crawl-delay, Host, Clean-param, Content-Signal은 누가 읽나요?

Google은 어느 것도 읽지 않습니다. Crawl-delay는 Bing이, Clean-param은 Yandex가 읽고, Host는 표준에도 Google의 목록에도 없으며, Cloudflare의 Content-Signal은 무엇을 크롤링해도 되는지가 아니라 콘텐츠를 어디에 써도 되는지를 밝힙니다.

Google은 네 가지 필드를 나열하고 “crawl-delay와 같은 다른 필드는 지원되지 않음”이라고 덧붙입니다. Bing 자체 블로그에 따르면 “crawl-delay 지시어는 양의 정수만 값으로 받습니다”. 그래서 편집기는 소수를 쓰지 않고 거부합니다. 현재 Bing 도움말 페이지는 읽을 수 없어서 범위나 단위를 확인하지 못했으므로, 이 페이지는 둘 다 밝히지 않습니다.

어느 것도 파일을 망가뜨리지 않습니다. RFC 9309는 다른 레코드의 파싱이 “명시적으로 정의된 레코드의 파싱을 방해해서는 안 된다(MUST NOT)”고 요구합니다. 네 가지 가운데 생성기가 쓰는 것은 Crawl-delay뿐이며, 누가 읽는지 함께 표시합니다.

어느 검색엔진이 어느 지시어를 읽는가
지시어GoogleBingYandex
User-agent읽음읽음읽음
Allow읽음읽음읽음
Disallow읽음읽음읽음
Sitemap읽음읽음읽음
Crawl-delay무시읽음확인 안 됨
Clean-param무시무시읽음
Host무시무시확인 안 됨
noindex무시확인 안 됨확인 안 됨
Content-Signal무시확인 안 됨확인 안 됨
  • Google은 user-agent, allow, disallow, sitemap 네 가지 필드를 지원한다고 명시합니다.
  • Crawl-delay는 Bing 자체 블로그에서 확인됩니다. 현재 Bing 도움말 페이지를 1차 출처로 읽을 수 없었기 때문에, 값의 범위나 단위는 싣지 않습니다.
  • Google이 2019년에 폐지했으며, 표준에 포함된 적도 없습니다.
  • Cloudflare의 Content Signals Policy: 콘텐츠를 어떻게 써도 되는지에 대한 선언이며, 크롤링 규칙이 아닙니다.

방금 만든 robots.txt 파일을 테스트하는 방법

두 번 테스트합니다. 공개하기 전에는 위의 공개 전 테스트에서 크롤러와 경로를 골라 판정을 내리는 규칙을 확인하세요. 올린 뒤에는 공개된 파일을 robots.txt 테스터로 검사하세요. 파일에 무엇이 적혀 있는지만큼 서버가 무엇을 응답하는지도 중요하기 때문입니다.

404를 응답하는 파일은 파일이 아예 없는 것으로 읽히므로 모든 크롤러가 모든 것을 가져갈 수 있습니다. 500이나 503을 응답하면 표준을 따르는 크롤러는 아무것도 가져가면 안 됩니다. RFC 9309 §2.3.1.4: 크롤러는 “완전한 차단을 가정해야 한다(MUST)”. Google은 자체 단계를 두어 이를 누그러뜨리며, 그 단계는 그림에 나와 있습니다.

Google 자체의 robots.txt 테스터는 사라졌습니다. Google 검색 센터가 2023년 11월 15일에 종료를 발표했고, 그 자리를 대신한 robots.txt 보고서는 Google이 가져온 파일을 보여 줄 뿐 규칙에 대해 URL을 테스트하지는 않습니다. 그 테스트는 위 생성기의 공개 전 테스트와 우리 robots.txt 테스터가 합니다.

GET /robots.txt에 대한 각 응답이 사이트 전체에 뜻하는 것
서버 응답그러면 크롤러는
200파일의 규칙을 따릅니다.
301, 302리다이렉트를 적어도 다섯 번 따라간 뒤 멈춥니다. 그러면 Google은 파일을 404로 읽습니다.
403, 404파일이 없는 것처럼 모든 것을 크롤링합니다.
429아무것도 크롤링하지 않습니다. Google은 이를 4xx가 아니라 5xx 쪽으로 셉니다.
500, 503표준에 따라 아무것도 크롤링하지 않습니다.
존재하지 않는 이름읽을 사이트가 없으므로 판정도 없습니다.
5xx를 받은 Google의 대응, 시간 순서대로
  1. 1처음 12시간사이트 크롤링을 멈추고 파일을 계속 다시 요청합니다
  2. 230일까지마지막으로 정상이던 robots.txt 사본을 씁니다
  3. 330일 이후사이트가 정상이면 robots.txt가 없는 것처럼 동작합니다

사이트의 트래픽을 잃게 하는 robots.txt 실수

비용이 큰 실수는 저마다 짧은 한 줄입니다. 스테이징에서 남은 Disallow: /, 의도보다 넓게 걸리는 접두어, 경로로 적은 Sitemap: 줄, 앞의 슬래시가 빠진 경로, 그리고 Google이 2019년에 읽기를 멈춘 noindex 줄입니다.

여기서는 파일을 복사하기 전에 모두 잡아냅니다. 입력하는 동안 robots.txt 테스터 자체의 감사가 실행되고 그 지적 사항이 파일 아래에 표시됩니다. 크롤러가 거부할 줄은 아예 쓰지 않으며, 편집기는 그 줄이 왜 제외되었는지 해당 행에 알려 줍니다.

한 줄이 아니라 한 쌍인 실수도 있습니다. 여기서 차단한 URL의 페이지에 noindex도 붙어 있는 경우입니다. 크롤러는 그 페이지를 가져오지 않으므로 noindex를 결코 보지 못하고, URL은 검색 결과에 남을 수 있습니다. 둘 중 하나를 고르세요. 크롤링을 차단하거나, 크롤러를 들여보낸 뒤 색인하지 말라고 알리거나입니다.

출처

robots.txt 실수 여섯 가지와, 각각이 실제로 일으키는 일
적힌 그대로의 줄실제로 일어나는 일
Disallow: /스테이징의 흔적: 운영 중인 사이트 전체가 모든 크롤러에 닫혀 있습니다.
Disallow: /admin/administrator와 /admin-tools도 차단합니다. 끝에 슬래시를 붙이세요.
User-agent: * 아래의 Allow: /파일 어디에든 전용 그룹이 있는 크롤러는 읽지 않습니다.
Sitemap: /sitemap.xmlSitemap 줄은 호스트가 포함된 전체 주소여야 합니다.
Disallow: admin경로는 /에서 시작합니다. 이 규칙은 아무것에도 일치하지 않습니다.
noindex: /private/2019년부터 무효입니다. 페이지는 계속 크롤링되고 색인될 수 있습니다.

Robots.txt 생성기: 자주 묻는 질문

robots.txt 파일은 어떻게 만드나요?

위에서 프리셋을 고르거나 직접 규칙을 작성한 뒤, 파일을 복사하거나 다운로드하세요. robots.txt라는 이름의 UTF-8 일반 텍스트로 저장해 사이트 루트에 올리면 https://your-site/robots.txt 주소에서 응답합니다. 제출 단계는 없습니다. Google 크롤러가 알아서 파일을 찾습니다. 그런 다음 공개된 주소를 robots.txt 테스터로 검사해 서버가 200을 응답하는지 확인하세요.

robots.txt 파일은 어디에 두나요?

적용할 호스트의 루트에 /robots.txt로 둡니다. 폴더 안에는 절대 두지 마세요. 크롤러는 거기서 파일을 찾지 않습니다. 호스트와 프로토콜마다 파일이 따로 필요하므로, example.com, www.example.com, shop.example.com은 각각 별도의 robots.txt를 제공합니다. Shopify에는 올릴 파일이 없으며, 테마의 robots.txt.liquid 템플릿을 편집합니다. Next.js에서는 파일을 app 폴더에 넣습니다.

robots.txt 파일이 꼭 필요한가요?

엄밀히는 아닙니다. 사이트에 robots.txt가 없고 그 주소가 404를 응답하면 크롤러는 모든 것을 가져갈 수 있으며, RFC 9309도 이를 허용합니다. 그래도 Sitemap 줄 하나만으로도 파일을 둘 가치가 있고, 장바구니, 내부 검색 결과, 끝없는 필터 URL에서 크롤러를 떼어 놓는 데도 쓸모가 있습니다. 가장 중요한 것은 그 주소가 서버 오류를 응답하지 않는 것입니다. 5xx는 표준을 따르는 크롤러에게 아무것도 가져가지 말라는 뜻입니다.

robots.txt로 페이지를 Google에서 뺄 수 있나요?

아니요. robots.txt는 크롤러가 페이지를 가져가는 것을 막을 뿐, Google이 그 페이지를 목록에 올리는 것을 막지는 않습니다. 다른 곳에서 링크된 차단 URL은 여전히 색인되어 설명 없이 표시될 수 있으며, Search Console에서는 “robots.txt로 인해 차단되었으나 색인이 생성됨” 상태로 나타납니다. 페이지를 빼려면 Google이 크롤링하게 두고 noindex meta 태그나 X-Robots-Tag 헤더를 제공하거나, 페이지를 로그인 뒤에 두세요. 같은 URL에 disallow와 noindex를 함께 쓰지 마세요.

AI 크롤러를 차단하면 Google 순위에 영향이 있나요?

AI 학습을 거부하는 것이라면 영향이 없습니다. Google이 모델 학습용으로 읽는 토큰인 Google-Extended는 Googlebot과 별개이며, Google은 이것이 Google 검색에 사이트가 포함되는지에 영향을 주지 않고 순위 결정 신호도 아니라고 밝힙니다. GPTBot, ClaudeBot 같은 다른 학습용 크롤러를 거부해도 검색엔진에는 아무 변화가 없습니다. 각 크롤러는 자신을 지정한 그룹만 읽기 때문입니다.

ChatGPT-User와 Claude-User를 차단해야 하나요?

사람을 거부하려는 것일 때만 그렇습니다. 이 크롤러는 누군가 ChatGPT나 Claude에게 페이지를 열어 달라고 했기 때문에 그 페이지 하나를 가져오므로, 차단하면 그 사람의 어시스턴트가 내 페이지를 읽지 못하게 될 뿐 크롤링을 막는 것은 아닙니다. 일부 운영사는 이런 크롤러가 어차피 robots.txt를 무시할 수 있다고 말합니다. 반대하는 것이 학습이라면 GPTBot과 ClaudeBot을 거부하세요. “AI 학습 거부” 프리셋이 바로 그렇게 합니다.

하위 도메인마다 robots.txt가 따로 필요한가요?

네. robots.txt는 그 파일을 제공하는 호스트와 프로토콜에만 적용되므로, blog.example.com, shop.example.com, www.example.com은 각자 파일이 필요하고, example.com/robots.txt의 규칙은 그 호스트들에 닿지 않습니다. Search Console의 robots.txt 보고서가 호스트별로 파일을 나열하는 것도 같은 이유입니다. 호스트를 하나씩 차례로 생성기에 입력하세요. 호스트마다 맞는 Sitemap 줄을 채워 줍니다.

Google은 Crawl-delay를 지원하나요?

아니요. Google은 지원하는 필드로 user-agent, allow, disallow, sitemap 네 가지를 들고, crawl-delay 같은 필드는 지원하지 않는다고 밝힙니다. Bing은 읽으며, Bing 자체 블로그에 따르면 값은 양의 정수여야 합니다. 이 생성기가 소수를 거부하는 것은 그 때문입니다. Crawl-delay 줄은 해가 없지만 Googlebot을 느리게 하지는 못하며, Search Console에도 이제 크롤링 속도 설정이 없습니다.

WordPress의 기본 robots.txt에는 무엇이 들어 있나요?

세 줄, 그리고 공개 사이트라면 Sitemap 줄입니다. User-agent: *, /wp-admin/에 대한 Disallow, /wp-admin/admin-ajax.php에 대한 Allow, 그리고 WordPress 5.5부터는 /wp-sitemap.xml을 가리키는 Sitemap 줄입니다. WordPress 자체의 do_robots() 함수가 쓰는 내용이 바로 이것입니다. 더 긴 Allow가 Disallow를 이기므로 admin-ajax.php는 크롤링할 수 있습니다. WordPress 프리셋을 고르면 정확히 이 파일에서 시작합니다.

robots.txt 파일은 어떻게 테스트하나요?

공개하기 전에는 이 페이지의 공개 전 테스트를 쓰세요. 크롤러와 경로를 고르면 허용인지 차단인지, 판정을 내린 규칙과 그 줄, 크롤러가 읽은 그룹을 볼 수 있습니다. 파일을 올린 뒤에는 공개된 사이트를 robots.txt 테스터로 검사하세요. 실제 파일을 가져오므로, 서버의 상태 코드가 각 크롤러에게 무엇을 뜻하는지도 알려 줍니다.

Allow 규칙이 작동하지 않는 이유는 무엇인가요?

대개 더 긴 Disallow가 같은 URL에 일치하기 때문입니다. 종류와 상관없이 경로가 가장 긴 규칙이 이기고, Allow는 길이가 같을 때만 이깁니다. 아니면 그 크롤러에게 전용 그룹이 있어서, Allow가 들어 있는 * 그룹을 아예 읽지 않는 경우입니다. 위의 편집기는 다른 규칙에 늘 지는 규칙을 표시하고, 공개 전 테스트는 판정을 내린 규칙과 크롤러가 읽은 그룹을 알려 줍니다.

이 생성기는 무료인가요? 파일을 업로드하나요?

무료이며, 가입도 하루 사용 한도도 없습니다. 모든 작업은 브라우저에서 이루어집니다. 파일은 이 페이지에서 작성되고 파싱되고 검사되며, 입력한 내용은 어디로도 전송되지 않습니다. 외부로 나가는 링크는 프리셋의 출처와 robots.txt 테스터뿐이며, robots.txt 테스터는 사용자가 그 페이지를 열고 검사를 요청할 때만 우리 서버에서 공개된 파일을 가져옵니다.