본문으로 건너뛰기

robots.txt란?

image

정의

robots.txt는 웹사이트의 루트 디렉토리에 위치하는 텍스트 파일로, 검색엔진 크롤러(봇)에게 어떤 페이지를 크롤링해도 되고 어떤 페이지는 크롤링하지 말아야 하는지를 알려주는 역할을 합니다. 이 파일은 Robots Exclusion Protocol 또는 Robots Exclusion Standard라고 불리는 표준을 따릅니다.

robots.txt 파일은 웹사이트의 교통 경찰과 같은 역할을 합니다. 검색엔진 봇이 웹사이트에 방문했을 때 가장 먼저 확인하는 파일이며, 이를 통해 사이트 운영자의 크롤링 정책을 파악합니다. 예를 들어, 관리자 페이지나 중복 콘텐츠, 테스트 페이지 등 검색 결과에 노출되지 않기를 원하는 영역을 지정할 수 있습니다.

중요한 점은 robots.txt는 '요청'이지 '강제'가 아니라는 것입니다. 대부분의 정상적인 검색엔진 봇(구글, 네이버, 빙 등)은 이 파일의 규칙을 존중하지만, 악의적인 봇이나 스크래퍼는 무시할 수 있습니다. 따라서 민감한 정보를 보호하기 위해서는 robots.txt만으로는 부족하며, 적절한 접근 제어나 암호화 등의 보안 조치가 필요합니다.

특징

  • 크롤 예산 최적화: 중요하지 않은 페이지의 크롤링을 차단하여, 검색엔진이 정말 중요한 페이지에 더 많은 리소스를 할당하도록 유도할 수 있습니다.
  • 중복 콘텐츠 방지: 비슷한 내용의 페이지나 다양한 파라미터로 생성되는 중복 URL을 차단하여 SEO 문제를 예방할 수 있습니다.
  • 사이트맵 위치 명시: robots.txt 파일 내에 사이트맵의 위치를 명시하여 검색엔진이 쉽게 찾을 수 있도록 합니다.
  • 단순하고 표준화된 형식: 특별한 기술 지식 없이도 텍스트 에디터로 쉽게 작성하고 수정할 수 있습니다.
  • 즉시 적용: 파일을 업로드하면 즉시 효력이 발생하며, 검색엔진 봇이 다음에 방문할 때부터 새로운 규칙을 적용합니다.

활용 방법

robots.txt 파일을 효과적으로 작성하고 관리하는 방법은 다음과 같습니다.

1단계: 기본 구조 이해 robots.txt 파일은 "User-agent"와 "Disallow/Allow" 지시어를 기본으로 합니다. User-agent는 어떤 봇에게 적용할 규칙인지를 지정하고, Disallow는 크롤링을 금지할 경로를, Allow는 크롤링을 허용할 경로를 지정합니다.

2단계: 차단할 영역 식별 웹사이트에서 검색엔진에 노출되지 않아야 할 영역을 파악합니다. 일반적으로 관리자 페이지(/admin), 개인정보 관련 페이지, 중복 콘텐츠, 테스트 페이지, 검색 결과 페이지, 장바구니나 체크아웃 페이지 등이 해당됩니다.

3단계: robots.txt 파일 작성 텍스트 에디터로 robots.txt 파일을 작성합니다. 모든 봇에 대한 규칙은 "User-agent: *"로 시작하며, 특정 봇에 대한 규칙을 별도로 지정할 수도 있습니다.

4단계: 루트 디렉토리에 업로드 작성한 robots.txt 파일을 웹사이트의 루트 디렉토리에 업로드합니다. 파일은 반드시 https://yoursite.com/robots.txt 형태로 접근 가능해야 합니다.

5단계: 테스트 Google Search Console의 robots.txt 테스터 도구를 사용하여 파일이 올바르게 작성되었는지, 원하는 URL이 제대로 차단되거나 허용되는지 확인합니다.

6단계: 정기적인 검토 웹사이트 구조가 변경될 때마다 robots.txt 파일도 함께 업데이트해야 합니다. 실수로 중요한 페이지를 차단하지 않았는지 정기적으로 검토하는 것이 중요합니다.

예시

예시 1: 기본적인 robots.txt 구조

User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /temp/
Allow: /

Sitemap: https://zero-coke.com/sitemap.xml

이 예시는 가장 기본적인 robots.txt 파일입니다. 모든 검색엔진 봇에게 admin, private, temp 디렉토리는 크롤링하지 말라고 지시하고, 나머지는 모두 허용합니다. 마지막에 사이트맵 위치를 명시했습니다.

예시 2: 특정 봇에 대한 규칙

# 구글봇 규칙
User-agent: Googlebot
Disallow: /search/
Disallow: /cart/
Allow: /

# 빙봇 규칙
User-agent: Bingbot
Disallow: /admin/
Allow: /

# 이미지 검색 봇
User-agent: Googlebot-Image
Disallow: /private-images/
Allow: /

# 나쁜 봇 차단
User-agent: BadBot
Disallow: /

# 모든 다른 봇
User-agent: *
Crawl-delay: 10
Disallow: /admin/

Sitemap: https://zero-coke.com/sitemap.xml
Sitemap: https://zero-coke.com/sitemap-images.xml

이 예시는 서로 다른 봇에 대해 각각 다른 규칙을 적용하는 방법을 보여줍니다. 주석(#)을 사용하여 가독성을 높였습니다.

예시 3: 와일드카드 사용

User-agent: *
# 모든 PDF 파일 차단
Disallow: /*.pdf$

# 특정 파라미터가 있는 URL 차단
Disallow: /*?sort=
Disallow: /*?filter=

# 특정 확장자 파일 차단
Disallow: /*.php$
Disallow: /*.inc$

# 하지만 특정 디렉토리는 허용
Allow: /public/*.pdf$

Sitemap: https://zero-coke.com/sitemap.xml

와일드카드(*)와 경로 끝 지정자($)를 사용하여 더 정교한 규칙을 만들 수 있습니다.

예시 4: 이커머스 사이트의 robots.txt

User-agent: *
# 사용자 계정 관련 페이지 차단
Disallow: /account/
Disallow: /login/
Disallow: /register/
Disallow: /checkout/
Disallow: /cart/

# 중복 콘텐츠 방지 - 정렬 및 필터 파라미터
Disallow: /*?sort=
Disallow: /*?page=
Disallow: /*?filter=

# 검색 결과 페이지
Disallow: /search?

# 관리자 영역
Disallow: /admin/

# 제품 페이지는 허용 (중요!)
Allow: /products/

# 크롤 딜레이 설정 (서버 부하 관리)
Crawl-delay: 5

Sitemap: https://zero-coke.com/sitemap.xml
Sitemap: https://zero-coke.com/sitemap-products.xml
Sitemap: https://zero-coke.com/sitemap-categories.xml

실제 이커머스 사이트에서 사용할 수 있는 포괄적인 robots.txt 예시입니다.

장단점

장점

  • 크롤링 효율성 향상: 검색엔진이 불필요한 페이지를 크롤링하는 데 시간과 리소스를 낭비하지 않도록 하여, 중요한 콘텐츠에 더 집중할 수 있게 합니다. 특히 대규모 웹사이트에서 크롤 예산을 효율적으로 관리하는 데 필수적입니다.

  • 서버 부하 감소: 과도한 크롤링으로 인한 서버 부하를 줄일 수 있습니다. Crawl-delay 지시어를 사용하면 봇의 요청 간격을 조절하여 서버 리소스를 보호할 수 있습니다.

  • 간단한 구현: 복잡한 프로그래밍 지식 없이도 텍스트 파일 하나로 쉽게 구현할 수 있으며, 수정도 즉시 가능합니다. 별도의 데이터베이스나 서버 설정 변경이 필요 없습니다.

단점

  • 보안 수단이 아님: robots.txt는 단순한 권장사항일 뿐 강제력이 없습니다. 악의적인 봇이나 해커는 이 파일을 무시할 수 있으므로, 민감한 정보를 보호하는 데는 적합하지 않습니다. 오히려 robots.txt에 차단된 경로를 명시하는 것이 공격자에게 숨겨진 페이지의 위치를 알려주는 결과가 될 수 있습니다.

  • 실수로 인한 심각한 영향: robots.txt 파일을 잘못 작성하면 실수로 전체 웹사이트를 차단하거나 중요한 페이지를 검색 결과에서 제외시킬 수 있습니다. "Disallow: /" 한 줄만 잘못 입력해도 전체 사이트가 검색엔진에서 사라질 수 있습니다.

  • 즉각적인 효과 없음: robots.txt 파일을 업데이트해도 검색엔진이 즉시 반영하지 않을 수 있습니다. 이미 인덱싱된 페이지를 제거하려면 robots.txt만으로는 부족하며, Google Search Console에서 URL 제거 요청을 별도로 해야 합니다.

FAQ

Q: robots.txt로 이미 인덱싱된 페이지를 삭제할 수 있나요? A: 아니요, robots.txt는 새로운 크롤링을 차단할 뿐 이미 인덱싱된 페이지를 삭제하지는 않습니다. 오히려 robots.txt로 차단하면 검색엔진이 해당 페이지를 다시 크롤링할 수 없어서 업데이트된 정보(예: noindex 태그)를 확인하지 못합니다. 이미 인덱싱된 페이지를 제거하려면 먼저 페이지에 noindex 메타 태그를 추가하고, 검색엔진이 이를 확인한 후에 robots.txt에서 차단하는 것이 올바른 순서입니다. 또는 Google Search Console의 URL 제거 도구를 사용할 수 있습니다.

Q: robots.txt 파일이 없으면 어떻게 되나요? A: robots.txt 파일이 없어도 웹사이트는 정상적으로 작동하며, 검색엔진은 모든 페이지를 크롤링할 수 있다고 가정합니다. 즉, 모든 것이 허용된 상태가 됩니다. 소규모 웹사이트나 모든 페이지를 검색 결과에 노출하고 싶은 경우에는 문제가 없지만, 차단이 필요한 영역이 있는 사이트라면 반드시 robots.txt를 만들어야 합니다.

Q: Disallow와 noindex의 차이는 무엇인가요? A: Disallow(robots.txt)는 검색엔진이 페이지를 크롤링하는 것을 차단하지만, 다른 곳에서 링크된 경우 해당 페이지가 여전히 검색 결과에 나타날 수 있습니다(내용은 없이 제목과 URL만). 반면 noindex(메타 태그)는 페이지를 크롤링하도록 허용하되, 검색 결과에는 절대 표시하지 말라고 지시합니다. 페이지를 완전히 검색 결과에서 제거하려면 robots.txt 차단이 아닌 noindex 메타 태그를 사용해야 합니다.

Q: 와일드카드(*)는 어떻게 작동하나요? A: 와일드카드()는 0개 이상의 모든 문자를 의미합니다. 예를 들어 "Disallow: /admin"는 /admin, /admin/, /admin/users, /administrator 등 admin으로 시작하는 모든 경로를 차단합니다. "$"는 URL의 끝을 나타내므로 "Disallow: /*.pdf$"는 .pdf로 끝나는 모든 URL을 차단합니다. 단, 모든 검색엔진이 와일드카드를 지원하는 것은 아니므로, 주요 검색엔진(구글, 빙 등)에서는 작동하지만 일부 오래된 봇에서는 무시될 수 있습니다.