robots.txt 및 sitemap 올바른 설정
제2장: 검색 기초편 · 제30문
robots.txt와 sitemap.xml은 웹사이트와 검색 엔진이 "소통"하는 두 가지 기본 파일입니다. 전자는 크롤러에게 "무엇을 크롤링하지 말아야 하는지" 알려주고, 후자는 크롤러에게 "이 페이지들을 크롤링해 달라"고 알려줍니다. 올바르게 설정하면 색인 효율을 크게 높일 수 있지만, 잘못 설정하면 사이트 전체가 검색 결과에서 사라질 수 있습니다.
robots.txt 기본 문법
robots.txt는 반드시 웹사이트 루트 디렉터리에 위치해야 합니다 (예: https://example.com/robots.txt), 기본 문법:
User-agent: Baiduspider
Disallow: /admin/
Disallow: /search?
Allow: /
User-agent: Googlebot
Disallow: /admin/
Allow: /
Sitemap: https://example.com/sitemap.xml
핵심 규칙:
User-agent: 어떤 크롤러를 지정할지 (*는 전체를 의미)Disallow: 크롤링 금지 경로Allow: 크롤링 허용 (Disallow보다 우선순위 높음)Sitemap: sitemap 주소 선언
어떤 경로를 차단해야 할까?
| 차단해야 할 경로 | 원인 |
|---|---|
| /admin/ 또는 /wp-admin/ | 백오피스 관리 페이지, SEO 가치 없음 |
| /search? 또는 /s? | 사이트 내 검색 결과 페이지, 대량의 저품질 중복 페이지 생성 |
| /cart/ /checkout/ | 장바구니, 결제 페이지, 색인 가치 없음 |
| /?sort= /?filter= | 정렬/필터 파라미터 페이지, 중복 콘텐츠 유발 |
| /tag/ (상황에 따라) | 태그 페이지 콘텐츠가 너무 빈약하면 차단 권장 |
| /api/ | 인터페이스 주소, 검색 결과에 노출되어서는 안 됨 |
절대 차단하면 안 되는 것:
- CSS 및 JS 파일 (Baidu는 페이지 렌더링 필요)
- 이미지 디렉터리 (이미지 색인을 원하지 않는 경우 제외)
- 모바일페이지
sitemap.xml 형식과 규격
표준 sitemap 형식:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/page1</loc>
<lastmod>2025-06-15</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
모범 사례:
- 각 sitemap 파일은 URL 50,000개를 초과하지 않으며, 파일 크기는 50MB를 초과하지 않습니다
- 제한을 초과할 경우 sitemap 인덱스 파일로 분할합니다:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-posts.xml</loc>
<lastmod>2025-06-20</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-products.xml</loc>
<lastmod>2025-06-18</lastmod>
</sitemap>
</sitemapindex>
제출 채널
- 바이두 검색리소스 플랫폼: 검색 서비스 → 일반 수집 → sitemap 제출 (txt 및 xml 형식 지원)
- Google Search Console: 색인 → 사이트맵 → 새 사이트맵 추가
- Bing Webmaster Tools: 사이트맵 → 사이트맵 제출
Baidu는 "능동 푸시 API"를 통한 신규 페이지 URL 실시간 제출도 지원하며, 시의성 콘텐츠(예: 뉴스)에 특히 유용합니다.
sitemap 업데이트 빈도 권장 사항
| 사이트 유형 | 업데이트 빈도 | 설명 |
|---|---|---|
| 뉴스 정보 | 매시간/실시간 | Baidu 능동 푸시와 함께 사용 |
| 전자상거래 사이트 | 매일 | 상품 등록/해제 변동이 빈번함 |
| 기업 공식 홈페이지 | 매주 | 콘텐츠 변동이 빈번하지 않음 |
| 블로그 사이트 | 새 글 발행 시 | CMS로 자동 업데이트 가능 |
흔한 실수
- robots.txt에 Disallow: / 를 작성했지만 되돌리는 것을 잊음: 사이트 전체가 차단되며, 가장 치명적인 오류입니다
- sitemap에 robots에서 차단된 URL 포함: 논리적 모순으로 검색 엔진이 혼란을 겪습니다
- sitemap에 404 페이지 포함: 크롤링 할당량 낭비
- lastmod 날짜 조작: 매번 현재 날짜를 기재하면 검색 엔진이 이 필드를 무시합니다
- robots.txt에 sitemap 위치 미선언: 필수는 아니지만 추가를 권장합니다
- sitemap 인코딩 오류:UTF-8 인코딩을 반드시 사용해야 하며, URL 내 특수 문자는 이스케이프해야 합니다
실전 제안
- 출시 전 반드시 robots.txt 점검:많은 웹사이트가 개발 단계에서
Disallow: /전체 사이트를 차단한 뒤 출시 후 수정하는 것을 잊어버려 몇 달 동안 색인되지 않는 경우가 있습니다 - sitemap에는 색인되길 원하는 정규 URL만 넣으세요:파라미터가 붙은 중복 페이지, noindex 페이지, 리디렉션 소스 URL은 넣지 마세요
- 매달 한 번 sitemap 상태 점검:Screaming Frog 등의 도구로 스캔하여 sitemap에 4xx/5xx 오류 페이지가 없는지 확인하세요
AI 도구로 해결하기: robots.txt 및 sitemap 설정 생성
시나리오 1: 사이트 유형에 맞는 robots.txt 생성
제 웹사이트는 [기업 공식 홈페이지/이커머스/콘텐츠 블로그]이고, [WordPress/자체 개발] 기반입니다. 차단하지 않아도 되는 디렉터리는 [CSS/JS/이미지]이고, 차단해야 하는 것은 [백엔드/검색 페이지/파라미터 페이지]입니다. 완전한 robots.txt를 생성해 주세요: Baiduspider와 Googlebot으로 나누어 작성하고, 백엔드와 사이트 내 검색을 차단하며, CSS/JS/이미지는 Allow하고, 마지막에 sitemap 주소를 선언하세요. 또한 각 줄 규칙의 역할을 주석으로 달아 제가 이해하기 쉽게 해주세요.
시나리오 2: 기존 URL 목록에서 sitemap.xml 생성
이것은 제 웹사이트의 모든 URL 목록입니다(sitemap 또는 URL 목록 붙여넣기). 다음을 도와주세요: 1) 파라미터가 붙은 URL, admin/search 등 색인되면 안 되는 URL을 필터링; 2) sitemap 규격에 맞춰 XML을 생성하고, 각 항목에 loc, lastmod(주어진 날짜 사용), changefreq, priority 포함; 3) 5만 개를 초과하면 sitemap index 형식으로 분할.
시나리오 3: sitemap 내 '지뢰' 점검
이것은 sitemap.xml입니다(내용 붙여넣기). 다음을 점검해 주세요: 1) URL이 모두 robots.txt의 허용 규칙과 일치하는지(robots.txt도 함께 첨부합니다); 2) noindex 페이지나 301 리디렉션 소스가 포함되어 있는지; 3) lastmod가 합리적인지(전부 오늘 날짜인지); 4) XML 인코딩과 이스케이프가 올바른지.
시나리오 4: 파라미터형 중복 URL을 차단하는 정규식 생성
제 웹사이트 URL에는 ?sort=, ?filter=, ?page=, ?utm_source=, ?session_id= 파라미터가 붙습니다. robots.txt에서 이 파라미터 페이지를 차단하는 정규식 규칙을 생성하고, 각 규칙의 매칭 범위와 의도치 않게 차단될 수 있는 경우를 설명해 주세요.
주의: AI의 한계
- robots.txt는 '거부권' 설정입니다:AI 생성 후 반드시 한 줄씩 사람이 재검토해야 하며, 특히
Disallow: /전체 사이트 차단이 발생하면 안 되므로, 출시 전 브라우저에서 robots.txt를 직접 방문해 확인하세요 - sitemap 내용은 사실이어야 합니다:AI는 당신이 붙여넣은 URL로만 생성할 수 있으며, 어떤 페이지가 noindex이거나 삭제되었는지 알 수 없으므로 직접 먼저 필터링해야 합니다
- AI가 lastmod를 조작하게 두지 마세요:lastmod를 조작하면 검색 엔진이 무시하고 신뢰도를 낮추므로, 날짜는 실제 파일 수정 시간에서 가져와야 합니다
