무료 상담 — SEO 대행 요금은 상담 후 사이트 상태에 맞춰 자세히 안내드립니다

robots.txt 설정 방법 — Disallow·Allow 문법과 확인법

robots.txt는 사이트 루트(예: https://example.com/robots.txt)에 두는 텍스트 파일로, 검색엔진 크롤러에게 어떤 URL을 크롤링해도 되는지 알려 줍니다. 설정은 User-agent로 대상 크롤러를 고르고 Disallow·Allow로 경로를 막거나 여는 방식이며, 결과는 브라우저와 구글 서치콘솔의 robots.txt 보고서로 확인합니다. 다만 robots.txt는 크롤링을 조절하는 도구이지 검색 결과에서 페이지를 빼는 도구가 아니므로, 색인을 막으려면 noindex를 써야 합니다.

style.css·.htaccess·robots.txt 세 파일 아이콘과 robots.txt 안의 User-agent·Disallow·Allow 규칙 예시

robots.txt란 무엇이고 어디에 두나요?

robots.txt는 로봇 배제 프로토콜(Robots Exclusion Protocol)에 따라 크롤러의 접근 범위를 적어 두는 일반 텍스트 파일이며, 사이트의 최상위 경로에 /robots.txt라는 이름(전부 소문자)으로 있어야 합니다. 이 규칙은 1994년에 처음 제안된 뒤 2022년 9월 IETF 문서 RFC 9309로 정리되었습니다. 검색창에 ‘robot.txt’로 찾는 경우가 많지만 파일 이름은 s가 붙은 robots.txt입니다.

구글 문서에 따르면 robots.txt의 주된 용도는 크롤러 요청이 몰려 서버에 부담이 가는 것을 막고, 중요하지 않거나 비슷한 페이지의 크롤링을 줄이는 것입니다. 사이트 전체의 검색엔진 최적화에서는 ‘어디까지 크롤링을 허용할지’ 정하는 기술 설정에 해당합니다. 또 파일 하나가 적용되는 범위는 그 파일이 있는 호스트·프로토콜·포트까지로 정해져 있습니다.

robots.txt 주소적용되는 곳적용되지 않는 곳
https://example.com/robots.txthttps://example.com/ 아래 모든 경로http://example.com/, https://shop.example.com/, https://example.com:8181/
https://www.example.com/robots.txthttps://www.example.com/ 아래https://example.com/ (www 없는 주소)
https://example.com/folder/robots.txt없음(하위 폴더의 파일은 읽지 않음)사이트 전체

robots.txt는 강제력이 있는 차단 장치가 아닙니다. 구글봇이나 네이버 검색로봇처럼 잘 만들어진 크롤러는 규칙을 따르지만, 규칙을 지키지 않는 봇도 있습니다. 또 파일에 적은 경로는 누구나 열어 볼 수 있으므로 비공개 자료의 위치를 알려 주는 셈이 될 수 있습니다. 회원 정보나 내부 문서는 로그인·비밀번호로 보호해야 합니다.

robots.txt 설정은 어떻게 작성하고 올리나요?

메모장 같은 텍스트 편집기로 robots.txt 파일을 UTF-8로 저장하고, 규칙을 적은 뒤 사이트 루트 디렉터리에 올리면 됩니다. 사이트당 robots.txt는 하나만 둡니다. 순서는 다음 다섯 단계입니다.

  1. 파일 만들기: 메모장(Windows)·텍스트 편집기(Mac)·VS Code에서 새 파일을 만들고 이름을 정확히 robots.txt로, 인코딩은 UTF-8로 저장합니다. 워드 프로세서는 둥근 따옴표 같은 예상치 못한 문자를 넣을 수 있어 쓰지 않습니다.
  2. 대상 크롤러 지정: 모든 크롤러에 같은 규칙을 주려면 첫 줄에 User-agent: *를 씁니다.
  3. 막을 경로·열 경로 적기: 그 아래에 Disallow:와 Allow:로 경로를 적습니다. 경로는 /로 시작하고 대소문자를 구분합니다.
  4. 사이트맵 위치 적기: Sitemap: 줄에 사이트맵의 전체 URL을 적습니다.
  5. 루트에 업로드: FTP 프로그램이나 호스팅 파일 관리자로 사이트 최상위 폴더에 올리고, 브라우저에서 https://도메인/robots.txt가 열리는지 봅니다.
User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /admin/public-info.html

Sitemap: https://example.com/sitemap.xml
FTP 프로그램 파일질라 화면 — 왼쪽은 내 컴퓨터, 오른쪽은 서버 폴더를 보여 주는 구성

위 화면은 FTP 프로그램 파일질라입니다. 서버에 접속한 뒤 오른쪽(서버) 창에서 index.php나 index.html이 있는 최상위 폴더를 열고 robots.txt를 끌어다 놓으면 됩니다. 워드프레스처럼 플러그인이 robots.txt 편집 화면을 제공하는 경우에는 그 화면에서 고쳐도 되며, 이때는 서버에 같은 이름의 실제 파일이 따로 있는지 먼저 확인합니다. 업로드 방법은 호스팅마다 다르므로 막히면 호스팅 업체 안내를 봅니다.

User-agent·Disallow·Allow·Sitemap 문법은 어떻게 쓰나요?

robots.txt 한 줄은 필드: 값 형식이고, 구글이 지원하는 필드는 user-agent·allow·disallow·sitemap 네 가지입니다. 필드 이름은 대소문자를 구분하지 않지만 Disallow·Allow 뒤의 경로 값은 구분합니다. # 뒤의 내용은 주석으로 무시됩니다.

필드뜻쓰는 법
User-agent아래 규칙을 적용할 크롤러User-agent: *(모든 크롤러), User-agent: Googlebot
Disallow크롤링하지 말아야 할 경로Disallow: /private/ — 값을 비우면 아무것도 막지 않음
Allow막힌 경로 안에서 크롤링을 허용할 경로Allow: /private/notice.html
Sitemap사이트맵 위치(전체 URL)Sitemap: https://example.com/sitemap.xml — 여러 줄 가능
Crawl-delay요청 간격구글은 지원하지 않음. 빙은 Bing 웹마스터 도구의 크롤링 제어 기능으로 속도를 조절

검색엔진별 크롤러 이름

특정 검색엔진에만 다른 규칙을 주려면 User-agent에 그 크롤러 이름을 적습니다. 이름은 대소문자를 구분하지 않습니다.

검색엔진robots.txt에 쓰는 이름비고
구글 웹 검색Googlebot모바일·데스크톱 모두 이 이름
구글 이미지·뉴스·동영상Googlebot-Image, Googlebot-News, Googlebot-Video전용 그룹이 없으면 Googlebot 그룹을 따름
빙bingbot빙의 기본 크롤러
네이버Yeti네이버 검색로봇
다음(전용 그룹 없이 관리)다음 전용 규칙이 필요 없으면 User-agent: * 그룹이 그대로 적용되고, 사이트 등록은 다음 웹마스터도구에서 함

주의할 점은 크롤러가 자기 이름과 가장 구체적으로 맞는 그룹 하나만 따른다는 것입니다. User-agent: Googlebot 그룹을 따로 만들면 구글봇은 User-agent: * 그룹의 규칙을 읽지 않으므로, 공통으로 막을 경로도 구글봇 그룹에 다시 적어야 합니다. 그룹을 적은 순서는 결과에 영향을 주지 않습니다.

Disallow와 Allow가 겹치면 무엇이 이기나요?

구글은 경로가 더 길어 URL과 더 많이 일치하는 규칙을 적용하고, 길이가 같아 충돌하면 덜 제한적인 규칙(Allow)을 적용합니다. RFC 9309도 같은 원칙을 둡니다. 예를 들어 Disallow: /folder/와 Allow: /folder/page.html이 함께 있으면 /folder/page.html은 크롤링이 허용됩니다.

와일드카드 *와 $는 어떻게 쓰나요?

구글과 빙 등 주요 검색엔진은 경로 값에서 두 가지 특수 문자를 지원합니다. *는 0개 이상의 아무 문자, $는 URL의 끝을 뜻합니다. 경로 끝에 붙인 *는 없는 것과 같아서 /fish*와 /fish는 같은 규칙입니다.

# .pdf가 들어간 모든 경로 차단(/file.pdf?id=1 포함)
Disallow: /*.pdf

# .pdf로 끝나는 URL만 차단(/file.pdf?id=1은 차단 안 됨)
Disallow: /*.pdf$

# sessionid 파라미터가 붙은 URL 차단
Disallow: /*?sessionid=

# 홈(/)만 허용하고 나머지는 차단
User-agent: *
Disallow: /
Allow: /$

Disallow로 크롤링을 차단하는 예시는 어떻게 되나요?

Disallow 뒤에 막을 경로를 적으면 그 경로로 시작하는 모든 URL의 크롤링이 차단됩니다. 경로를 비워 두면 아무것도 막지 않고, /만 적으면 사이트 전체를 막습니다. 자주 쓰는 형태는 다음과 같습니다.

목적규칙결과
특정 페이지 차단Disallow: /example/page-to-block/그 경로로 시작하는 URL만 차단
폴더 전체 차단Disallow: /private//private/ 아래 전부 차단(/private 페이지 자체는 아님)
사이트 전체 차단Disallow: /모든 URL 크롤링 차단
전체 허용Disallow:(값 없음) 또는 Allow: /제한 없음
폴더는 막고 일부만 허용Disallow: /private/ + Allow: /private/specific-page/지정한 하위 경로만 크롤링

Disallow는 ‘크롤러가 방문하지 말라’는 요청일 뿐 페이지를 숨기지 않습니다. 주소를 아는 사람은 여전히 그 페이지를 열 수 있고, 다른 사이트가 링크하면 URL이 검색 결과에 나올 수도 있습니다. 이 차이는 아래 noindex 항목에서 자세히 다룹니다.

상황별 robots.txt 설정 예시는?

대부분의 작은 사이트는 전체 허용에 사이트맵 한 줄이면 충분하고, 막을 영역이 분명할 때만 규칙을 추가합니다. 아래 예시의 경로는 사이트 구조에 맞게 바꿔 씁니다.

전체 허용(기본)

User-agent: *
Disallow:

Sitemap: https://example.com/sitemap.xml

워드프레스 관리자 영역과 내부 검색 결과 차단

관리자 화면은 막되, 화면 기능에 쓰이는 admin-ajax.php는 열어 둡니다. 내부 검색 결과(?s=)처럼 끝없이 만들어지는 URL도 막을 대상입니다. /wp-includes/나 /wp-content/plugins/를 통째로 막으면 페이지를 그리는 CSS·자바스크립트까지 막힐 수 있어 넣지 않았습니다.

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/

Sitemap: https://example.com/sitemap_index.xml

쇼핑몰: 장바구니·결제·정렬 파라미터 차단

User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /*?sort=
Disallow: /*?filter=

Sitemap: https://example.com/sitemap.xml

구글과 네이버에 다른 규칙 주기

크롤러별 그룹을 만들면 그 크롤러는 * 그룹을 읽지 않으므로, 공통 규칙(/admin/)을 각 그룹에 다시 적었습니다.

User-agent: Googlebot
Disallow: /admin/
Disallow: /private/

User-agent: Yeti
Disallow: /admin/
Disallow: /private/
Disallow: /test/

User-agent: *
Disallow: /admin/

Sitemap: https://example.com/sitemap.xml

공개 전 개발·스테이징 서버

User-agent: *
Disallow: /

이 설정은 모든 크롤링을 막으므로 실제 운영 사이트에 그대로 옮겨지면 검색 유입이 끊깁니다. 개발 서버를 운영 서버로 복사할 때 robots.txt가 함께 넘어가지 않았는지 꼭 확인합니다. 개발 서버를 완전히 숨기려면 robots.txt보다 비밀번호 보호가 확실합니다.

robots.txt 크롤링 차단과 noindex 색인 차단은 무엇이 다른가요?

robots.txt는 크롤링을 막고, noindex는 색인을 막습니다. 구글 문서는 robots.txt가 ‘웹페이지가 구글에 표시되지 않도록 하는 수단이 아니다’라고 밝히고 있습니다. robots.txt로 막힌 URL도 다른 곳에서 링크되면 설명 없이 URL만 검색 결과에 나올 수 있으며, 검색 결과에서 빼려면 noindex나 비밀번호 보호를 써야 합니다.

구분robots.txt Disallownoindex
막는 것크롤러의 방문(크롤링)검색 색인 등록
적는 곳사이트 루트의 robots.txt 파일페이지 head의 meta 태그 또는 HTTP 응답 헤더 X-Robots-Tag
검색 결과링크가 있으면 설명 없이 URL이 나올 수 있음크롤러가 태그를 읽으면 검색 결과에서 빠짐
알맞은 용도서버 부담 관리, 의미 없는 URL(필터·정렬·내부 검색) 크롤링 줄이기검색에 나오면 안 되는 페이지(감사 페이지, 얇은 중복 페이지 등)
<!-- 페이지 head 안에 -->
<meta name="robots" content="noindex">

# PDF처럼 HTML이 아닌 파일은 응답 헤더로
X-Robots-Tag: noindex

가장 흔한 실수는 둘을 함께 쓰는 것입니다. 페이지에 noindex를 넣고 같은 URL을 robots.txt로 막으면 구글은 페이지를 크롤링하지 못해 noindex 태그를 보지 못하고, 그 페이지는 검색 결과에 계속 남을 수 있습니다. 검색 결과에서 빼고 싶은 페이지는 robots.txt에서 막지 말고 noindex만 넣은 뒤 크롤링을 허용해 둡니다. meta 태그 작성법은 메타 태그 가이드에 정리했습니다.

robots.txt가 없으면 어떻게 되나요?

robots.txt가 없어 서버가 404를 돌려주면 구글과 네이버 모두 ‘크롤링 제한 없음(모두 허용)’으로 처리합니다. 막을 경로가 없는 사이트라면 파일이 없어도 검색 노출에 문제는 없고, 서치콘솔도 robots.txt가 없는 것은 괜찮다고 안내합니다. 오히려 주의할 것은 파일을 가져오다 서버 오류(5xx)가 나는 경우입니다.

robots.txt 응답구글네이버
2xx(정상)파일의 규칙을 따름파일의 규칙을 따름. HTML 문서로 돌려주면 ‘없음(모두 허용)’으로 해석될 수 있음
3xx(리디렉션)리디렉션을 5번까지 따라간 뒤 중단하고 404처럼 처리5회까지 따라가고, 넘으면 ‘모두 허용’
4xx(없음 등)429를 뺀 4xx는 파일이 없는 것으로 보고 제한 없음‘모두 허용’
5xx(서버 오류)처음 12시간은 크롤링을 멈추고, 30일까지는 마지막 정상 버전을 사용(없으면 제한 없음)‘모두 허용하지 않음’. 이전에 받은 규칙이 있으면 일시적으로 사용

즉 robots.txt 주소가 404를 주는 것은 괜찮지만, 500대 오류를 주면 크롤링이 멈출 수 있습니다. 서버 설정을 바꾼 뒤에는 robots.txt가 200과 text/plain으로 응답하는지 확인해 둡니다.

robots.txt 확인 방법은?

가장 빠른 방법은 브라우저 주소창에 https://도메인/robots.txt를 입력해 파일이 그대로 열리는지 보는 것이고, 구글이 실제로 읽은 내용은 서치콘솔의 robots.txt 보고서에서 확인합니다. 예전의 ‘robots.txt 테스터’ 대신 지금은 이 보고서와 URL 검사 도구를 씁니다.

  1. 브라우저: 시크릿 창에서 https://example.com/robots.txt를 엽니다. 404가 나오거나 웹페이지(HTML)가 보이면 위치·이름이 잘못된 것입니다.
  2. 명령줄: curl -I https://example.com/robots.txt로 응답 코드(200)와 Content-Type(text/plain)을 확인합니다.
  3. 구글 서치콘솔 robots.txt 보고서: 설정 메뉴의 robots.txt 보고서에서 구글이 마지막으로 가져온 시간, 파일 크기, 문법 경고·오류를 봅니다. 도메인 속성이나 경로 없는 URL 접두사 속성에서만 보입니다. 사용법은 구글 서치콘솔 사용 가이드를 참고하세요.
  4. URL 검사 도구: 특정 URL이 robots.txt 때문에 막혔는지는 서치콘솔 URL 검사로 확인합니다.
  5. 네이버 서치어드바이저: 웹마스터 도구의 robots.txt 도구에서 파일을 수집·검증하고, 웹 페이지별 수집 가능 여부를 테스트할 수 있습니다. 파일을 고친 뒤 ‘수집 요청’을 누르면 네이버 검색로봇에 바로 알릴 수 있고, 간단 생성 기능으로 파일을 만들어 내려받을 수도 있습니다.

robots.txt에 사이트맵 위치를 적어 두면 검색엔진이 사이트맵을 찾기 쉬워집니다. 사이트맵 파일 자체를 만드는 방법은 sitemap.xml 가이드를 보세요.

robots.txt 작성 시 흔한 실수는 무엇인가요?

대부분의 문제는 파일 위치, 경로 대소문자, 그룹 규칙을 잘못 이해해서 생깁니다. 업로드 전에 아래 항목을 점검하세요.

  • 하위 폴더에 둠: /blog/robots.txt는 읽지 않습니다. 반드시 호스트의 루트에 둡니다.
  • 대소문자 불일치: Disallow: /Admin/은 /admin/을 막지 않습니다. 실제 URL과 똑같이 적습니다.
  • 빈 Disallow 오해: Disallow:는 ‘전부 허용’이고, 전부 차단은 Disallow: /입니다.
  • CSS·자바스크립트 차단: 페이지를 그리는 데 필요한 리소스를 막으면 구글이 페이지를 제대로 분석하지 못합니다. 네이버도 이런 리소스는 문서와 같은 규칙으로 두거나 허용해 달라고 안내합니다.
  • 크롤러 그룹을 따로 만들고 공통 규칙을 빠뜨림: 이름을 지정한 그룹이 있으면 * 그룹은 적용되지 않습니다.
  • Sitemap에 상대 경로: Sitemap 값은 https://부터 쓰는 전체 URL이어야 합니다.
  • 민감한 정보를 robots.txt로만 보호: 파일은 공개되며 차단은 강제가 아닙니다. 로그인·비밀번호로 보호합니다.

크롤링 범위를 줄이는 이유는 크롤러가 의미 있는 페이지에 시간을 쓰게 하려는 것입니다. 이 개념은 크롤링 예산 용어 설명에서 더 볼 수 있습니다.

robots.txt를 고치면 구글에 언제 반영되나요?

구글은 보통 robots.txt 내용을 최대 24시간 동안 캐시하고, 자동 크롤링 중에 변경을 감지해 갱신합니다. 중요한 페이지의 차단을 풀었거나 가져오기 오류를 고쳐 더 빨리 알려야 한다면 서치콘솔 robots.txt 보고서에서 재크롤링을 요청할 수 있습니다. 다만 차단이 풀린 URL이 곧바로 다시 크롤링된다는 보장은 없습니다.

www 주소와 하위 도메인에도 robots.txt가 따로 필요한가요?

네. robots.txt는 그 파일이 있는 호스트·프로토콜·포트에만 적용됩니다. example.com과 www.example.com, shop.example.com은 각각 자기 루트에 파일이 있어야 하며, 상위 도메인의 파일이 하위 도메인으로 이어지지 않습니다. http와 https도 서로 다른 출처로 봅니다.

robots.txt 파일 크기에 제한이 있나요?

구글은 robots.txt를 500KiB까지만 읽고 그 뒤 내용은 무시합니다. 표준 문서 RFC 9309도 크롤러가 최소 500KiB까지는 읽도록 정하고 있습니다. 규칙이 지나치게 많다면 막을 파일을 한 폴더로 모으거나 와일드카드로 규칙을 합쳐 줄입니다.

함께 보면 좋은 글

박정윤 — 오픈타임 대표 · SEO 실무 5년+
부산에서 오픈타임(피케이커뮤니케이션)을 운영하며, 한국 전국의 전문직(의료·법률·세무·교육·부동산·건축·미용)을 서비스합니다.
  • 경험 — 쇼핑몰·자사 사이트 운영 출신, 광고주 입장 SEO 5년+, SEO·디지털 마케팅 200건+ 직접 작업
  • 전문성 — 대표 클라이언트 평균 트래픽 +287%, 핵심 키워드 3~6개월 내 구글 1페이지 진입(대표 클라이언트 기준)
  • 권위·신뢰 — 요금·작업 범위 공개, 통신판매업 신고 완료, 개인정보보호법 준수

잠깐 — 내 사이트는
구글에서 제대로 보이고 있을까요?

색인이 빠진 페이지, 느린 속도, 겹치는 키워드처럼 순위를 막는 문제는 대부분 사이트 안에 있습니다. 사이트 주소와 목표 키워드를 남겨 주시면 무엇부터 고칠지 무료로 상담해 드립니다.