robots.txt는 무엇을 하는 파일인가
사이트 루트에 두는 텍스트 파일로, 크롤러에게 어디를 읽어도 되는지 알려줍니다. 요청 전에 크롤러가 먼저 읽고 규칙을 따릅니다.
여기서 가장 중요한 오해를 먼저 정리합니다. robots.txt는 접근 제어가 아닙니다. 규칙을 지키는 것은 크롤러의 선택이고, 주소를 아는 사람은 그대로 접근할 수 있습니다. 숨겨야 할 페이지는 서버에서 인증으로 막아야 합니다.
왜 사고가 나나
가장 흔한 사고는 개발 단계 설정이 배포 후에 남는 것입니다.
개발 중에는 검색에 걸리면 곤란하니 전체를 막아둡니다. 그리고 출시할 때 그 줄을 지우는 걸 잊습니다. 화면은 멀쩡하고 사람이 접속하면 잘 보이니까 몇 주가 지나서야 "검색에 안 나온다"로 발견됩니다.
User-agent: *
Disallow: /
이 두 줄이 남아 있으면 사이트 전체가 검색에서 사라집니다.
확인 순서
1. 응답 코드부터
/robots.txt가 200으로 응답하는지 봅니다. 404면 규칙이 없는 것으로 간주되고, 5xx면 크롤러가 사이트 전체를 읽지 않을 수 있습니다.
파일이 없는 것보다 잘못 있는 것이 더 위험합니다.
2. 대상 경로
중요한 경로가 Disallow에 걸려 있지 않은지 봅니다. 특히 이런 것들을 확인합니다.
- 와일드카드가 의도보다 넓게 잡혔는지 (
Disallow: /a는/about도 막습니다) - CSS·JS 경로를 막고 있는지 (화면을 렌더링하지 못해 판단이 틀어집니다)
- 크롤러별 규칙이 서로 어긋나는지
3. Sitemap 줄
Sitemap: 줄이 실제 주소를 가리키는지 확인합니다. 도메인을 옮겼는데 이 줄만 옛 주소로 남아 있으면 제출해도 아무 효과가 없습니다.
이건 눈에 잘 안 띄는 실수입니다. 파일은 200으로 잘 응답하니 문제가 없어 보입니다.
흔한 실수 정리
| 실수 | 결과 |
|---|---|
배포 후 Disallow: / 방치 | 사이트 전체 색인 차단 |
| Sitemap 줄이 옛 도메인 | 제출해도 무효 |
| CSS·JS 경로 차단 | 화면 렌더링 실패로 판단 오류 |
| robots.txt로 비공개 처리 시도 | 주소가 알려지면 그대로 접근 가능 |
| 크롤러별 규칙 충돌 | 특정 검색엔진에서만 누락 |
막고 싶을 때 쓰는 방법
목적에 따라 수단이 다릅니다.
- 검색 결과에 안 나오게 → 페이지에
noindex를 넣습니다. 이때 robots.txt로 막으면 안 됩니다. 크롤러가 페이지를 읽어야 noindex를 볼 수 있기 때문입니다. 자세한 건 noindex와 robots.txt 차이에 정리했습니다. - 아무도 못 보게 → 서버에서 인증을 겁니다.
- 크롤 부하를 줄이려고 → robots.txt가 적절한 수단입니다.
고친 뒤 확인
수정 후에는 공개된 /robots.txt를 직접 다시 받아 봅니다. 관리 도구의 설정 화면이 아니라 실제 응답을 봐야 합니다. 캐시나 CDN 때문에 예전 내용이 계속 나가는 경우가 있습니다.