Robots.txt: Googlebot의 크롤링 제어, 디렉터리 차단, 크롤링 속도 지시어, SEO 모범 사례를 알아보세요.

요약
Robots.txt는 사이트 루트에 위치한 텍스트 파일로, 검색엔진에 사이트의 어떤 부분을 크롤링하고 어떤 부분을 건너뛸지 알려 주어 크롤링 예산을 관리하고 비공개 페이지의 색인을 막는 데 도움을 줍니다.
더 알아보고 싶다면 물어보세요
Robots.txt는 검색엔진이 웹사이트를 크롤링하는 방식을 제어하는 단순하지만 강력한 파일입니다. 이 파일은 `https://example.com/robots.txt`에 위치하며, Google, Bing 및 기타 봇이 크롤링할 수 있는 페이지와 디렉터리를 지정하는 규칙을 담고 있습니다. Robots.txt는 크롤링 예산(Google이 매일 크롤링하는 페이지 수)을 관리하고, 중요하지 않은 페이지에 크롤링이 낭비되는 것을 막으며, 비공개 콘텐츠가 검색 결과에 나타나지 않도록 도와줍니다.
대부분의 웹사이트에는 robots.txt 파일이 있지만, 상당수가 잘못 설정되어 있습니다. 잘못 설정된 robots.txt는 중요한 페이지를 실수로 차단해 순위 잠재력을 낭비하게 만듭니다. 잘 설정된 robots.txt는 크롤링 효율을 높이고 사이트의 프라이버시를 보호합니다. 이 가이드에서는 robots.txt 문법, 모범 사례, 실제 예시를 다룹니다.
Robots.txt는 검색엔진 봇에 크롤링 지침을 전달하는 표준화된 텍스트 파일입니다. 봇은 사이트를 처음 방문할 때 다른 어떤 것보다 먼저 `/robots.txt`를 요청합니다. 로봇은 규칙을 읽고 이를 따릅니다(봇이 규칙을 지키는 봇이라는 전제하에).
Google의 robots.txt 문서는 이 표준에 대한 공식 참고 자료입니다. robots.txt 형식은 1994년에 만들어져 널리 채택되었습니다. 모든 주요 검색엔진(Google, Bing, Baidu)이 robots.txt를 준수합니다.
중요: Robots.txt는 방화벽이 아니라 가이드라인입니다. 규칙을 지키는 봇(Google, Bing)은 robots.txt 규칙을 준수합니다. 악성 봇과 스크레이퍼는 robots.txt를 무시합니다. robots.txt는 해커나 스크레이퍼 차단용이 아니라 검색엔진 크롤링 관리용으로 사용하세요. 보안을 위해서는 서버 수준의 도구를 사용하세요.
Robots.txt는 단순한 텍스트 문법을 사용합니다. 각 규칙은 두 부분으로 구성됩니다: User-agent(규칙이 적용되는 봇)와 Disallow 경로(차단할 페이지)입니다.
기본 예시:
User-agent: *
Disallow: /admin/
Disallow: /staging/
Sitemap: https://example.com/sitemap.xml
이 규칙은 모든 봇(`*`는 모든 봇을 의미)에게 `/admin/` 및 `/staging/` 디렉터리를 크롤링하지 말라고 지시합니다. Sitemap 줄은 사이트맵이 어디에 있는지 봇에게 알려 줍니다.
User-agent: \*는 모든 봇을 의미합니다. 개별 봇을 지정할 수도 있습니다:
`User-agent: Googlebot`은 Google의 봇에만 적용됩니다. `User-agent: Bingbot`은 Bing의 봇에만 적용됩니다. 서로 다른 규칙을 가진 여러 User-agent 섹션을 둘 수 있습니다.
Disallow: /path/는 봇에게 해당 경로를 크롤링하지 말라고 지시합니다. Disallow: /는 사이트 전체를 차단합니다. Disallow:(빈 값)는 모든 것을 허용합니다. User-agent마다 여러 개의 Disallow 규칙을 나열할 수 있습니다.
Allow: /path/는 상위 디렉터리가 차단되어 있더라도 특정 경로의 크롤링을 허용합니다. 예: Disallow: /temp/와 함께 Allow: /temp/important/를 지정하면 /important/ 하위 디렉터리만 크롤링이 허용됩니다.
패턴 1: 관리자 페이지 차단
User-agent: *
Disallow: /admin/
Disallow: /user/
Disallow: /account/
관리자, 사용자, 계정 페이지의 크롤링을 차단합니다. 이러한 페이지는 일반적으로 검색엔진을 위한 페이지가 아닙니다.
패턴 2: 스테이징 환경 차단
User-agent: *
Disallow: /staging/
Disallow: /test/
봇이 사이트의 테스트 또는 스테이징 버전을 크롤링하지 못하도록 합니다.
패턴 3: 특정 파일 형식 차단
User-agent: *
Disallow: /*.pdf
Disallow: /*.zip
봇이 PDF와 ZIP 파일을 크롤링하지 못하도록 합니다. 색인되면 안 되는 PDF가 많을 때 유용합니다.
패턴 4: 서버에 과부하를 주는 봇 속도 늦추기
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Crawl-delay: 10
Ahrefs 봇을 완전히 차단합니다(SEO 도구가 사이트를 크롤링하지 않기를 원하는 경우). Semrush 봇에는 요청 사이에 10초의 지연을 추가해 속도를 늦춥니다. Crawl-delay는 서버에 과부하를 주는 공격적인 봇에 유용합니다.
패턴 5: 모두 허용(기본값)
User-agent: *
Disallow:
이것이 기본값입니다. 비어 있는 Disallow는 모두 허용을 의미합니다. 모든 콘텐츠의 크롤링을 허용하려면 robots.txt를 아예 생략해도 됩니다.
Robots.txt는 크롤링을 차단합니다. 메타 로봇 noindex는 색인을 차단합니다. 두 가지는 서로 다른 목적을 가집니다.
robots.txt를 사용해야 하는 경우: 크롤링 예산을 절약하고 싶을 때. 크롤링되면 안 되는 중복 콘텐츠가 있을 때. 봇이 접근하면 안 되는 관리자 페이지가 있을 때. 공격적인 봇의 속도를 늦추고 싶을 때.
메타 로봇 noindex를 사용해야 하는 경우: 페이지가 크롤링은 되되 색인되지는 않기를 원할 때(오류와 문제를 확인하기 위해). 색인은 막되 내부 링크와 크롤링은 계속 허용하고 싶을 때. 페이지를 게시된 상태로 유지하면서 언젠가 검색에서 제거하고 싶을 때.
예: `/products?page=2`와 같은 페이지네이션 페이지는 크롤링 예산을 절약하기 위해 robots.txt에서 차단할 수 있습니다(Google은 일반적으로 페이지네이션을 통합하기 때문입니다). 하지만 canonical 관계를 파악하기 위해 크롤링되기를 원할 수도 있습니다. 그런 경우에는 robots.txt 대신 canonical을 사용하세요.
크롤링 예산은 Google이 매일 사이트에서 크롤링하는 URL의 수입니다. 수백만 개의 페이지를 가진 대규모 사이트는 모든 페이지를 매일 크롤링받을 수 없습니다. Google은 사이트의 권위와 변경 빈도에 따라 크롤링 예산을 할당합니다. 크롤링 예산은 한정되어 있습니다. 중요하지 않은 페이지에 예산을 낭비하면 중요한 페이지가 덜 자주 크롤링됩니다.
크롤링되면 안 되는 페이지(중복 콘텐츠, 페이지네이션된 검색 결과, 사용자 계정 페이지, 테스트 페이지)를 차단해 크롤링 예산을 최적화하세요. 페이지를 하나 차단할 때마다 Google은 중요한 콘텐츠를 크롤링할 예산을 더 확보하게 됩니다.
흔히 크롤링 예산을 낭비하는 요소: 무한 페이지네이션(상품 필터가 무제한의 URL을 생성), 매개변수만 다른 중복 콘텐츠, 모든 URL에 붙는 세션 ID, 끝없이 URL을 생성하는 캘린더/이벤트 페이지. robots.txt를 사용해 이러한 패턴을 차단하세요.
Google Search Console에서 사이트의 크롤링 통계를 확인할 수 있습니다. 크롤링 요청을 매일 모니터링하세요. Google이 새로운 콘텐츠를 발견하지 못한 채 같은 페이지를 반복해서 크롤링한다면 robots.txt와 차단 전략을 점검하세요.
robots.txt에 사이트맵 URL을 포함하세요. robots.txt 파일 끝에 `Sitemap: https://example.com/sitemap.xml`을 추가하세요. 이렇게 하면 Google에 XML 사이트맵의 위치를 알려 줄 수 있습니다. 파일이 여러 개라면 여러 사이트맵을 나열할 수 있습니다.
예시:
User-agent: *
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-news.xml
robots.txt에 사이트맵을 나열하는 것은 선택 사항이지만(Google Search Console을 통해 사이트맵을 제출할 수 있습니다), 모범 사례입니다.
Google Search Console에는 robots.txt 테스터가 있습니다. 설정 > 크롤링 > robots.txt 테스트로 이동하세요. URL을 입력하면 robots.txt가 해당 URL을 차단하는지 확인할 수 있습니다. 배포 전에 규칙을 검증하는 데 매우 유용합니다.
robots.txt 변경 사항은 배포 전에 반드시 테스트하세요. 단 하나의 실수(예: 사이트 전체를 차단하는 `Disallow: /`)로 순위가 폭락할 수 있습니다. 테스터를 사용해 다음을 확인하세요:
중요한 페이지가 차단되지 않았는지. 관리자 페이지가 차단되었는지. 중복 콘텐츠 패턴이 차단되었는지. 핵심 경로가 실수로 차단되지 않았는지.
robots.txt를 배포한 후에는 Google Search Console의 크롤링 보고서에서 변화를 모니터링하세요. 크롤링 속도가 예기치 않게 떨어진다면 중요한 콘텐츠를 실수로 차단했을 수 있습니다.
실수 1: CSS와 JavaScript 차단. robots.txt에서 `/css/` 또는 `/js/`를 차단하면 Google은 CSS와 JavaScript를 크롤링할 수 없습니다. CSS가 없으면 Google은 페이지를 제대로 렌더링할 수 없습니다. CSS나 JavaScript를 차단하지 마세요.
실수 2: 중요한 콘텐츠 차단. 배포 전에 항상 테스트하세요. `Disallow: /staging/` 대신 `Disallow: /p`처럼 오타를 내면 의도치 않게 `/products/`가 차단될 수 있습니다.
실수 3: 보안 목적으로 robots.txt 사용. 민감한 데이터를 보호하는 데 robots.txt에 의존하지 마세요. 보안이 중요한 페이지는 robots.txt만이 아니라 인증을 요구해야 합니다. Robots.txt는 공개되어 있으며 쉽게 우회할 수 있습니다.
실수 4: 도메인마다 일관되지 않은 robots.txt. 여러 도메인을 운영한다면 일관된 robots.txt 정책을 유지하세요. 실수로 규칙이 달라지면 크롤링 효율 문제가 발생할 수 있습니다.
실수 5: 사이트맵 자체를 차단. robots.txt에서 `/sitemap.xml`을 절대 차단하지 마세요. Google은 페이지를 발견하기 위해 사이트맵을 크롤링해야 합니다.
Crawl-delay와 Request-rate: 이 지시어는 봇의 속도를 늦춥니다. `Crawl-delay: 10`은 요청 사이에 10초를 추가합니다. `Request-rate: 1/10`은 10초당 1회의 요청을 허용합니다. 서버에 과부하를 주는 봇에 사용하세요. Google은 이러한 지시어 대신 Search Console 설정을 사용할 것을 권장합니다.
Allow 지시어: 상위 경로가 차단되어 있더라도 특정 경로의 크롤링을 허용합니다. 예외를 만들 때 유용합니다. 예: `Disallow: /temp/`와 함께 `Allow: /temp/keep/`을 지정하면 keep 하위 디렉터리만 허용됩니다.
Google의 robots.txt 사양에는 지원되는 모든 지시어가 문서화되어 있습니다. 대부분의 기능은 거의 필요하지 않습니다. 대부분의 사이트는 기본적인 User-agent, Disallow, Sitemap만 사용하면 충분합니다.
User-agent별 규칙을 사용하면 봇마다 다른 크롤링 규칙을 적용할 수 있습니다. Googlebot, Bingbot 및 기타 user-agent에 대한 규칙을 각각 지정할 수 있습니다. Google은 사이트 전체를 크롤링하되 Bing은 특정 섹션에 접근하지 못하도록 제한하고 싶을 때 유용합니다. 각 규칙 블록의 시작 부분에 user-agent를 지정하세요:
`User-agent: Googlebot`은 Google의 크롤러에만 규칙을 적용합니다. `User-agent: *`는 모든 봇에 규칙을 적용합니다. 규칙은 다음 user-agent 지시어가 나올 때까지 해당 user-agent에 적용됩니다. 봇별로 여러 규칙 블록을 만들 수 있습니다.
Crawl-delay와 request-rate 지시어는 봇에게 크롤링 빈도를 알려 줍니다. `Crawl-delay: 5`는 봇에게 요청 사이에 5초를 기다리라고 지시합니다. 이를 통해 서버 부하가 줄어듭니다. `Request-rate: 1/10`은 봇에게 10초당 최대 1회만 요청하라고 지시합니다. Google의 robots.txt 문서에 지원되는 모든 지시어가 자세히 설명되어 있습니다.
사이트맵 위치 지시어는 봇에게 사이트맵의 위치를 알려 줍니다. `Sitemap: https://example.com/sitemap.xml`은 봇을 XML 사이트맵으로 안내합니다. 여러 사이트맵을 지정할 수 있습니다. 봇이 모든 페이지를 효율적으로 발견하는 데 도움이 되므로 권장됩니다.
Clean-param 지시어는 크롤링 전에 URL 매개변수를 제거합니다. `Clean-param: utm_source&utm_medium https://example.com`은 Google에게 example.com의 UTM 매개변수를 무시하라고 지시합니다. 이를 통해 Google이 추적 링크를 중복 콘텐츠로 취급하는 것을 방지합니다. 현재는 Google이 대부분의 추적 매개변수를 자동으로 처리하므로 덜 사용됩니다.
Google Search Console의 robots.txt 테스터에서 robots.txt 파일을 테스트하세요. 이 도구는 Googlebot 기준으로 robots.txt에 의해 차단될 URL을 보여 줍니다. 이를 통해 중요한 페이지가 실수로 차단되는 것을 방지할 수 있습니다.
Robots.txt는 검색엔진 크롤링을 관리하고 사이트의 프라이버시를 보호하기 위한 단순하지만 핵심적인 파일입니다. 잘 설정된 robots.txt는 중요하지 않은 페이지를 차단하고, 크롤링 예산을 절약하며, 중복 콘텐츠가 여러 번 크롤링되는 것을 방지합니다. 잘못 설정된 robots.txt는 중요한 콘텐츠를 실수로 차단해 순위를 폭락시킬 수 있습니다.
robots.txt 변경 사항은 배포 전에 항상 테스트하세요. Google Search Console의 테스터를 사용해 규칙을 검증하세요. 크롤링 통계를 매월 모니터링하세요. 중요하지 않은 콘텐츠를 차단하고 크롤링 예산을 효과적으로 관리하세요. 저희 GEO SEO 감사 도구를 사용해 robots.txt 설정을 감사하고, 사이트 전체의 크롤링 가능성 및 색인과 관련된 잠재적 문제를 파악하세요.
출처
아니요. robots.txt에서 페이지를 차단하면 Google이 해당 페이지를 크롤링하지 못하게 되지만 SEO에는 도움이 되지 않습니다. 페이지가 색인되지 않기를 원한다면 대신 noindex 태그를 사용하세요. robots.txt는 크롤링 예산을 절약하는 데 사용하세요.
아니요. robots.txt에서 CSS나 JavaScript를 절대 차단하지 마세요. Google이 페이지를 완전히 이해하려면 이러한 리소스에 접근할 수 있어야 합니다. 이를 차단하면 Google이 콘텐츠를 올바르게 렌더링할 수 없습니다.
일반적으로 Google의 요청이 지나치게 많은 경우가 아니라면 크롤링 속도를 설정할 필요가 없습니다. Google이 대역폭을 소진하고 있다면 Crawl-delay 지시어를 사용하세요. 대부분의 사이트는 Google의 기본 크롤링 속도를 감당할 수 있습니다.
먼저 Sorank를 경험한 사람들
