robots.txt 로 AI 크롤러를 막는 법, 그리고 왜 자주 안 막히는가
차단 줄을 넣었는데 정말 막혔는지 알 수 없을 때를 위한 글입니다. 답부터 말하면 규칙이 겹칠 때는 가장 긴 줄이 이기고, User-agent 이름은 대소문자를 안 가리지만 경로는 가립니다. 그 둘을 모르면 막았다고 믿는 줄이 실제로는 아무것도 안 막습니다.
1. robots.txt 가 무엇인가
robots.txt 는 사이트 루트에 두는 텍스트 파일입니다. 크롤러가 어느 경로를 가져가도 되는지 적어 두는 자리이고, 크롤러는 그 사이트를 훑기 전에 이 파일을 먼저 읽습니다.
1994년에 메일링 리스트에서 시작한 관례였다가 2022년에 IETF 가 RFC 9309 로 표준 문서를 냈습니다. 지금 큰 크롤러들이 따른다고 밝히는 규칙이 이 문서입니다. 이 화면의 판정도 전부 여기서 나옵니다.
중요한 성격이 하나 있습니다. robots.txt 는 요청이지 담장이 아닙니다. 지키겠다고 밝힌 크롤러만 지키고, 안 지키는 쪽은 그냥 가져갑니다. 그 경우는 서버나 CDN 단에서 막아야 합니다.
2. 기본 규칙: 그룹과 가장 긴 일치
파일은 그룹 단위로 읽습니다. User-agent 줄 하나 이상이 오고 그 뒤에 Allow 와 Disallow 줄이 붙으면 그게 한 그룹입니다. 규칙 줄 다음에 다시 User-agent 가 나오면 새 그룹이 시작됩니다.
크롤러는 자기 이름이 적힌 그룹 하나만 읽습니다. 자기 이름이 없으면 User-agent: * 그룹을 읽고, 그것도 없으면 이 파일에는 자기에게 적용될 규칙이 없다고 봅니다. 이름 비교는 대소문자를 안 가립니다(RFC 9309 2.2.1 절).
한 그룹 안에서 여러 줄이 같은 경로에 걸리면 가장 긴 줄이 이깁니다. 규격은 이것을 바이트 수가 가장 많은 일치라고 적습니다. 그리고 Allow 와 Disallow 가 같은 길이로 부딪히면 Allow 가 이깁니다(2.2.2 절).
경로에는 별표와 달러를 쓸 수 있습니다. 별표는 글자 몇 개든 대신하고, 달러는 경로의 끝을 뜻합니다. 아무 표시가 없으면 앞자리부터 걸리는 접두 비교입니다. 그래서 Disallow: /admin 은 /administrator 에도 걸립니다(2.2.3 절).
3. 이 화면의 세부 규칙
도메인을 넣으면 우리 서버가 그 사이트의 robots.txt 와 llms.txt 두 개를 받아옵니다. 그 밖의 경로는 열지 않습니다. 경로를 적어 넣어도 버리고 루트만 봅니다. robots.txt 는 규격상 루트에만 있기 때문입니다.
받아온 파일은 저장하지 않습니다. 한 번 응답으로 넘기고 끝나고, 판정은 브라우저 안에서 돕니다. 그래서 경로를 바꿔 다시 볼 때는 우리 서버를 또 부르지 않습니다.
안전장치가 넷 있습니다. 내부망 주소와 localhost 는 거절하고, 8초 안에 답이 없으면 끊고, 500KiB 까지만 읽고, 리다이렉트는 다섯 번까지만 따라갑니다. 따라갈 때마다 주소를 다시 검사해서 안쪽으로 되돌려 보내는 길을 막습니다.
크롤러 이름은 그 회사 공식 문서에서 확인한 것만 표에 올립니다. 확인하지 못한 이름은 비웁니다. 각 이름 옆에 출처 링크와 확인한 날짜가 붙어 있습니다.
이름 비교는 정확히 일치할 때만 그 그룹을 읽습니다. Googlebot 그룹이 Googlebot-Image 에 자동으로 적용되지는 않습니다. 그런 상속은 규격이 아니라 그 회사가 자기 문서에서 따로 정하는 것이고, 우리는 공식 문서에 적힌 경우에만 그 사실을 근거 칸에 밝힙니다.
우리가 판정하는 것은 robots.txt 가 무엇을 말하는가까지입니다. 그 크롤러가 실제로 그 말을 지켰는지는 우리 쪽에서 알 방법이 없어서 말하지 않습니다.
검사해 보기4. 막는 줄을 어디에 넣나
막는 줄 자체는 간단합니다. User-agent 에 크롤러 이름을 적고 다음 줄에 Disallow: / 를 적으면 그 크롤러에게 사이트 전체를 막는 뜻이 됩니다. 크롤러마다 그룹을 따로 두어도 되고, User-agent 줄을 여러 개 붙인 뒤 규칙을 한 번만 적어도 됩니다.
워드프레스는 파일이 실제로 없어도 가상 robots.txt 를 만들어 냅니다. 그래서 FTP 로 루트에 robots.txt 파일을 직접 올리거나, SEO 플러그인의 robots.txt 편집 화면에서 고쳐야 합니다. 파일을 올리면 그쪽이 이깁니다.
티스토리나 네이버 블로그처럼 임대한 자리에 글을 쓰는 곳은 그 파일을 서비스가 관리하는 경우가 많습니다. 내 설정 화면에 robots.txt 항목이 없으면 그 경우입니다. 그때 이 화면은 그 서비스가 지금 무엇을 막고 있는지 확인하는 데까지 쓸모가 있습니다.
직접 만든 사이트나 정적 사이트라면 공개 폴더 루트에 robots.txt 파일을 두면 됩니다. Next.js 는 app 폴더의 robots 파일로, Hugo 와 Jekyll 은 static 또는 루트 폴더에 둔 파일로 만듭니다.
줄을 넣은 뒤에는 브라우저 주소창에 도메인 뒤 슬래시 robots.txt 를 직접 쳐서 그 줄이 실제로 나오는지 보세요. 캐시나 플러그인 때문에 안 반영되는 경우가 흔합니다. 그 다음에 이 화면으로 판정을 보면 됩니다.
5. llms.txt 는 무엇이 다른가
llms.txt 는 사이트 루트에 두는 마크다운 파일입니다. 사람이 아니라 언어 모델이 읽기 좋게 그 사이트의 얼개와 주요 문서 링크를 적어 두자는 제안입니다.
robots.txt 와 하는 일이 반대입니다. robots.txt 는 무엇을 가져가지 말라고 적는 자리이고, llms.txt 는 무엇을 봐 달라고 적는 자리입니다. 그래서 둘은 서로를 대신하지 못합니다.
정직하게 적으면 이것은 아직 표준이 아닙니다. 표준화 기구가 채택한 규격이 아니라 한 개인이 제안해 퍼진 형식이고, 주요 AI 회사가 이 파일을 읽는다고 공식적으로 밝힌 바는 우리가 확인하지 못했습니다. 그래서 이 화면은 있는지와 무엇이 적혀 있는지까지만 보여 주고 점수를 매기지 않습니다.
6. 자주 막히는 부분
차단 줄을 넣었는데 이 화면이 허용이라고 말한다면 대개 더 긴 Allow 줄이 아래에 있습니다. Disallow: / 와 Allow: /blog/ 가 같이 있으면 블로그 경로는 열려 있습니다. 가장 긴 줄이 이긴다는 규칙 때문입니다.
User-agent 이름의 대소문자는 문제가 아닙니다. gptbot 이라고 적어도 GPTBot 에 걸립니다. 반대로 경로는 대소문자를 가립니다. Disallow: /Admin 은 /admin 을 막지 않습니다.
Disallow 뒤를 비워 두면 아무것도 막지 않는다는 뜻입니다. 막으려던 자리에 빈 값을 둔 파일이 의외로 많습니다. 전체를 막으려면 Disallow: 슬래시 한 글자를 적어야 합니다.
파일을 편집기에서 저장할 때 맨 앞에 BOM 이 붙으면 첫 줄의 User-agent 를 못 읽습니다. 이 화면은 BOM 이 있으면 그 사실을 함께 알려 줍니다. UTF-8 에서 BOM 없이 저장하면 됩니다.
robots.txt 가 404 로 답하면 규격상 제한이 없는 것으로 봅니다. 즉 파일을 지우는 것은 전부 막는 것이 아니라 전부 여는 것입니다. 반대로 5xx 로 답하면 전부 막힌 것으로 봅니다.
마지막으로 robots.txt 를 지키지 않는 수집기는 이 파일로 막히지 않습니다. 그 경우는 서버 설정이나 CDN 의 봇 차단 기능으로 막아야 합니다. 이 화면은 그 부분을 판정하지 않습니다.
출처
확인일 2026-09-22