robots.txt 차단(Disallow)과 구글 색인 문제의 진실

robots.txt의 Disallow는 크롤링을 막을 뿐 색인을 막지 못합니다. 오히려 페이지를 봐야만 알 수 있는 noindex 태그를 차단해 색인을 방해할 수 있습니다.

Disallow 로는 색인을 막을 수 없습니다

구글 서치 콘솔에서 'robots.txt에 의해 차단됨' 경고를 보고 파일을 수정했는데 문제가 해결되지 않습니까? 혹은 특정 페이지를 검색에서 제외하려고 `Disallow` 규칙을 추가했는데, 오히려 '크롤링은 되었지만 현재 색인되지 않았습니다'라는 메시지가 뜨기도 합니다. 심지어 차단한 페이지가 제목 없이 URL만 덩그러니 검색 결과에 나타날 때도 있습니다.

이 모든 혼란은 `robots.txt`의 역할을 오해해서 비롯됩니다. `robots.txt`의 `Disallow` 지시어는 '크롤링(수집)'을 막는 규칙이지 '색인(저장)'을 막는 규칙이 아닙니다. 구글봇에게 '이 페이지는 들여다보지 마세요'라고 말하는 것이지, '이 페이지의 존재를 검색 결과에서 지워주세요'가 아니라는 뜻입니다.

크롤링은 로봇이 웹페이지의 내용을 읽어가는 행위, 색인은 그 내용을 분석해 검색 결과 데이터베이스에 저장하는 행위입니다. 완전히 다른 두 단계입니다.

서치 콘솔의 두 가지 메시지: '차단됨' vs '색인되지 않음'

구글 서치 콘솔의 '색인 생성' 보고서는 문제의 원인을 정확히 알려줍니다. 많은 사용자가 이 둘을 혼동하지만 의미는 완전히 다릅니다.

외부 링크 등 다른 경로를 통해 구글이 페이지의 존재를 알게 되었지만, `robots.txt`가 해당 페이지의 내용 확인(크롤링)을 막고 있는 상태입니다. 봇이 페이지를 읽지 못했으므로 당연히 페이지 안의 `noindex` 태그 같은 다른 지시어도 확인할 수 없습니다. 이 경우, 구글은 페이지의 존재 자체는 알고 있기 때문에 외부 링크의 앵커 텍스트 등을 이용해 검색 결과에 URL만 노출시킬 수도 있습니다.

반면 '크롤링됨 - 현재 색인되지 않음'은 `robots.txt`가 허용해서 구글봇이 페이지를 성공적으로 읽었으나, 페이지 품질이 낮거나 내용이 부실하다고 판단하여 스스로 색인을 보류한 상태를 말합니다. 이는 `robots.txt`의 문제가 아니라 콘텐츠의 문제입니다.

서치 콘솔 메시지원인해결책
`robots.txt`에 의해 차단됨`robots.txt` 파일이 해당 URL의 크롤링을 `Disallow` 함.색인이 필요한 페이지라면 `robots.txt`에서 해당 규칙을 삭제. 색인이 불필요하다면 `noindex` 태그를 추가하고 `robots.txt` 차단을 해제.
크롤링됨 - 현재 색인되지 않음페이지를 읽었으나, 내용이 부실하거나 중복되는 등 품질 문제로 구글이 색인을 보류함.콘텐츠 품질 개선, 내부 링크 강화, 사이트 구조 개선.

색인을 막는 올바른 방법: noindex 태그

검색 결과에서 특정 페이지를 확실하게 제외하고 싶다면, `robots.txt`가 아니라 페이지의 HTML 소스에 `noindex` 메타 태그를 직접 넣어야 합니다. 구글봇이 페이지를 크롤링해서 이 태그를 봐야만 '아, 이 페이지는 색인하면 안 되는구나'라고 판단하고 검색 데이터베이스에서 제외하기 때문입니다.

가장 큰 실수가 바로 `noindex` 태그를 넣은 페이지를 `robots.txt`로 동시에 막아버리는 것입니다. 이렇게 하면 봇이 페이지에 접근조차 못 해서 정작 중요한 `noindex` 태그를 발견할 수 없게 됩니다. 결과적으로 페이지는 영원히 '차단된' 상태로 남아있게 됩니다.

  1. 색인을 원치 않는 페이지의 `<head>` 섹션을 찾습니다.
  2. 다음과 같은 메타 태그를 추가합니다. 이 태그는 구글뿐 아니라 네이버, 빙 등 대부분의 검색엔진이 따릅니다.
  3. 해당 페이지를 막고 있던 `robots.txt`의 `Disallow` 규칙이 있다면 반드시 제거해서, 봇이 이 페이지를 크롤링하고 `noindex` 태그를 읽을 수 있도록 허용합니다.
  4. 구글 서치 콘솔에서 해당 URL의 색인 생성을 다시 요청하거나, 사이트맵을 다시 제출하여 변경사항을 알립니다.
html
<head>
  <meta name="robots" content="noindex">
  <!-- 다른 head 태그들... -->
</head>
PDF 파일이나 이미지처럼 HTML `<head>`가 없는 파일의 색인을 막으려면 서버 설정에서 `X-Robots-Tag: noindex` HTTP 헤더를 전송해야 합니다. 이는 좀 더 복잡한 기술이 필요합니다.

그렇다면 robots.txt 는 언제 써야 합니까?

그럼 `robots.txt`는 쓸모없는 파일일까요? 아닙니다. `robots.txt`의 진짜 목적은 '크롤링 예산(Crawl Budget)'을 효율적으로 관리하는 데 있습니다. 검색엔진 봇은 사이트의 모든 페이지를 무한정 방문하지 않습니다. 사이트 규모에 따라 할당된 예산만큼만 크롤링합니다.

따라서 로그인 페이지, 관리자 페이지, 장바구니, 내부 검색 결과 페이지처럼 색인될 필요도 없고 내용도 없는 페이지들의 크롤링을 막아 예산을 아껴야 합니다. 그래야 봇이 아낀 힘으로 정말 중요한 핵심 콘텐츠 페이지들을 더 자주, 더 깊이있게 들여다볼 수 있습니다.

올바른 `robots.txt` 파일은 사이트의 핵심 구조를 검색엔진에 알리는 중요한 신호입니다. 어떤 봇을 차단할지, 어떤 경로를 막을지, 그리고 사이트맵(Sitemap) 파일의 위치가 어디인지 알려주는 역할을 합니다.

  • **User-agent:** 규칙을 적용할 로봇(봇)을 지정합니다. `*`는 모든 봇을 의미합니다.
  • **Disallow:** 지정한 로봇의 크롤링을 차단할 경로를 지정합니다. `/admin/`처럼 폴더 단위로 막는 것이 일반적입니다.
  • **Allow:** `Disallow`로 막은 폴더 안에서 특정 파일이나 하위 폴더만 예외적으로 크롤링을 허용할 때 씁니다.
  • **Sitemap:** 사이트의 전체 URL 목록이 담긴 `sitemap.xml` 파일의 절대 주소를 알려주어 크롤링을 돕습니다.
툴즈의 <a href='/tools/robots-txt'>robots.txt 생성기</a>를 사용하면 복잡한 규칙을 쉽게 만들 수 있습니다. '구글봇', '네이버 예티' 같은 검색엔진 봇은 허용하면서, 트래픽만 차지하는 'AI 학습 크롤러'나 'SEO 분석 봇'만 선택적으로 차단하는 규칙도 버튼 클릭 몇 번으로 생성할 수 있습니다.

사이트맵(Sitemap)으로 크롤링을 유도하기

`robots.txt`가 '오지 말라'고 막는 역할을 한다면, 사이트맵은 '이리 와서 보세요'라고 길을 안내하는 지도 역할을 합니다. 사이트맵은 사이트 내에 존재하는 모든 중요 페이지의 목록을 XML 파일 형식으로 정리한 것입니다.

검색엔진 봇은 `robots.txt` 파일을 가장 먼저 확인합니다. 이때 파일 끝에 `Sitemap: https://example.com/sitemap.xml` 같은 줄이 있으면, 봇은 그 주소로 가서 사이트의 전체 구조를 파악하고 목록에 있는 페이지들을 우선적으로 크롤링하기 시작합니다. 이는 신규 사이트나 내부 링크 구조가 복잡한 사이트의 페이지들이 누락 없이 발견되도록 돕는 가장 효과적인 방법입니다.

사이트맵은 직접 만들 수도 있지만, 주소 목록만 붙여넣으면 XML 형식에 맞게 자동으로 파일을 생성해주는 도구를 쓰는 것이 편합니다. URL 목록만 있다면 <a href='/tools/sitemap-gen'>사이트맵 생성기</a>로 1분 안에 `sitemap.xml` 파일을 만들고, 그 파일의 주소를 `robots.txt`에 추가하면 됩니다.

자주 묻는 질문

robots.txt 에서 모든 것을 Disallow 하고 사이트맵만 Allow 하면 어떻게 되나요?

매우 흔한 실수이며 절대 그렇게 하면 안 됩니다. `User-agent: *`, `Disallow: /`, `Allow: /sitemap.xml` 규칙은 '모든 페이지 접근을 막되, 사이트맵 파일만 읽으라'는 뜻입니다. 봇은 사이트맵을 읽어서 페이지 목록은 알게 되지만, 정작 그 페이지들에 접근하려고 하면 `Disallow: /` 규칙에 막혀 아무것도 크롤링할 수 없습니다. 결국 아무 페이지도 색인되지 않습니다.

실수로 사이트 전체를 Disallow 했습니다. 얼마나 지나야 복구되나요?

`robots.txt`에서 차단 규칙을 삭제하고 구글 서치 콘솔의 'URL 검사' 도구로 홈페이지 등 주요 페이지의 색인 생성을 요청하면 보통 며칠 내로 다시 크롤링이 시작됩니다. 하지만 사이트 규모가 크다면 전체 페이지가 다시 색인되는 데 몇 주 이상 걸릴 수 있습니다. `robots.txt` 파일을 수정한 뒤에는 서치 콘솔의 'robots.txt 테스터'로 의도대로 작동하는지 꼭 확인해야 합니다.

GPTBot 같은 AI 학습 봇은 차단하는 게 좋은가요?

정답은 없습니다. 내 콘텐츠가 AI 모델 학습에 쓰이는 것을 원치 않거나, 불필요한 서버 트래픽이 부담된다면 차단하는 것이 좋습니다. `robots.txt`에 `User-agent: GPTBot`, `Disallow: /` 와 같이 추가하면 됩니다. 툴즈의 robots.txt 생성기에는 'AI 크롤러만 차단' 옵션이 있어 OpenAI, 구글, Anthropic 등의 AI 봇을 한 번에 차단하는 규칙을 손쉽게 만들 수 있습니다.

noindex 와 nofollow의 차이점은 무엇인가요?

`noindex`는 '이 페이지를 검색 결과에 넣지 말라'는 지시이고, `nofollow`는 '이 페이지 안에 있는 링크들을 따라가지 말라'는 지시입니다. 만약 한 페이지의 색인은 막고 싶지만 그 페이지가 링크한 다른 페이지들은 봇이 발견하도록 하고 싶다면 `<meta name="robots" content="noindex, follow">`를 사용하면 됩니다. 반대로 모두 막고 싶다면 `noindex, nofollow`를 씁니다.