robots.txt Allow와 Disallow가 충돌하면 누가 이기나
robots.txt에 Disallow: /wp-admin/로 관리자 폴더 전체를 막아놓고, 그 밑의 특정 파일 하나만 Allow로 예외를 두고 싶을 때가 있습니다. 두 규칙이 같은 경로를 두고 정반대 지시를 내리면 크롤러는 어느 쪽을 따를까요? 파일에 적힌 순서와는 무관하게, 정해진 규칙이 있습니다.
1. 핵심 규칙: 더 긴(구체적인) 경로가 이긴다
구글을 비롯한 주요 크롤러는 robots.txt의 Allow/Disallow 충돌을 경로 문자열의 길이로 해결합니다. 같은 User-agent 블록 안에서 어떤 URL에 매칭되는 규칙이 여러 개면, 매칭된 경로 패턴이 더 긴(=더 구체적인) 쪽이 승리합니다. 파일에서 Allow가 먼저 나오든 Disallow가 먼저 나오든, 순서는 결과에 영향을 주지 않습니다.
Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php
/wp-admin/는 7글자, /wp-admin/admin-ajax.php는 23글자입니다. 더 긴 쪽인 Allow 규칙이 우선하므로, /wp-admin/ 하위는 전부 차단되지만 admin-ajax.php 하나만은 크롤링이 허용됩니다. 워드프레스가 이 조합을 기본 권장하는 이유도 이 매커니즘 때문입니다 — admin-ajax.php는 프론트엔드 AJAX 요청을 처리하는 공개 엔드포인트라 검색엔진이 접근할 수 있어야 정상 작동하는 페이지들이 있기 때문입니다.
2. 길이가 같으면 어떻게 되나: Allow가 이긴다
두 규칙의 매칭 경로 길이가 정확히 같은 극히 드문 경우, 구글 문서는 덜 제한적인 쪽(Allow)이 우선한다고 명시하고 있습니다. 즉 동률일 때는 "막는 것"보다 "여는 것"에 무게를 두는 방향으로 설계되어 있습니다.
3. 왜 순서가 아니라 길이인가
robots.txt는 오랫동안 공식 표준이 없는 관행(convention)으로만 존재하다가, 2022년에야 IETF에 의해 RFC 9309로 정식 표준화됐습니다. 표준화 이전에는 크롤러마다 충돌 해석이 달라서, 어떤 크롤러는 "먼저 나온 규칙 우선", 어떤 크롤러는 "나중에 나온 규칙 우선"으로 동작하는 등 일관성이 없었습니다. 구글은 일찌감치 "경로 길이(구체성) 우선" 방식을 자체 정책으로 문서화했고, 이 방식이 RFC 9309에도 사실상 채택되면서 현재는 사실상의 업계 표준으로 굳어졌습니다. 다만 모든 크롤러가 RFC를 완전히 동일하게 구현한다는 보장은 없으므로, 정말 중요한 예외 규칙이라면 실제 크롤러별 동작을 개별적으로 확인하는 편이 안전합니다.
4. 실무 팁
- 예외를 만들 땐 경로를 확실히 더 길게: 특정 하위 경로만 열고 싶다면, Allow 규칙의 경로가 Disallow 규칙보다 문자 수 기준으로 명백히 더 길고 구체적인지 확인하세요.
- 파일 순서에 의존하지 말 것: "이 규칙을 나중에 써야 이긴다"는 식의 가정은 틀렸습니다. 순서는 결과와 무관합니다.
- 실제 동작은 도구로 검증: Google Search Console의 robots.txt 리포트나 URL 검사 도구로, 의도한 경로가 실제로 허용/차단되는지 직접 테스트하는 것이 가장 확실합니다.
자주 묻는 질문
Q. Allow와 Disallow 중 어느 쪽이 항상 우선인가요?
A. 어느 한쪽이 항상 이기는 게 아니라, 매칭되는 경로 패턴이 더 긴(구체적인) 규칙이 우선입니다. Allow가 더 길면 Allow가, Disallow가 더 길면 Disallow가 이깁니다.
Q. 규칙 순서를 바꾸면 결과가 달라지나요?
A. 아닙니다. Google을 포함한 주요 크롤러의 충돌 해석은 경로 길이 기준이라, 파일 내 작성 순서는 결과에 영향을 주지 않습니다.
Q. 모든 검색엔진 크롤러가 이 규칙을 동일하게 따르나요?
A. 2022년 RFC 9309 표준화 이후 대부분의 주요 크롤러가 유사한 방식을 따르지만, robots.txt가 오래도록 비공식 관행으로 운영돼왔던 만큼 크롤러마다 세부 구현 차이가 있을 수 있습니다. 중요한 규칙은 실제 도구로 검증하세요.
Q. Disallow: /wp-admin/ 과 Allow: /wp-admin/ 처럼 경로가 완전히 같으면 어떻게 되나요?
A. 길이가 동일하므로 동률 규칙이 적용되어, 덜 제한적인 Allow 쪽이 우선합니다.