robots.txt 차단 오류 | 색인 삭제가 안 된 이유

오래된 게임 파일이 모여 있는 폴더가 있었습니다. 지금은 쓰지 않는 페이지가 수백 개였고, 검색 결과에도 계속 남아 있었습니다. 저는 robots.txt에 한 줄만 넣으면 정리될 줄 알았습니다.

하지만 몇 주가 지나도 검색 결과는 그대로였습니다. 크롤링은 막혔는데 색인은 지워지지 않았습니다. 이때 알게 된 핵심은 간단했습니다. Disallow는 크롤링 차단이고, 색인 삭제는 별도의 작업이라는 점입니다.

이 글은 robots.txt 사용법만 설명하는 글이 아닙니다. 이미 검색 결과에 잡힌 오래된 폴더를 정리하면서 Disallow와 noindex 순서를 잘못 이해했던 경험을 바탕으로, 색인을 빼려면 어떤 순서로 처리해야 하는지 정리한 글입니다.

robots.txt 차단 해제와 noindex 적용 예시

robots.txt 한 줄로 끝낸 첫 조치

처음에 한 작업은 단순했습니다.

User-agent: *
Disallow: /games_html/

오래된 파일이 들어 있는 /games_html/ 폴더를 막으면 검색 결과에서도 사라질 거라고 생각했습니다. “크롤러가 못 들어오면 더 이상 검색에 안 나오겠지”라고 판단한 것입니다.

절반만 맞았습니다. 크롤러 접근은 줄었습니다. 하지만 이미 색인된 URL은 검색 결과에 계속 남았습니다.

더 이상한 점은 검색 결과에 제목과 URL만 남고, 설명에는 “이 페이지의 정보를 제공할 수 없습니다”와 비슷한 문구가 보인다는 것이었습니다. 페이지를 지운 것도 아니고, 정상적으로 설명이 나오는 것도 아닌 어정쩡한 상태였습니다.

Disallow와 noindex의 차이

제가 헷갈렸던 부분은 robots.txt가 하는 일과 noindex가 하는 일을 구분하지 못한 것이었습니다.

목적사용할 방법robots.txt Disallow
크롤링 차단robots.txt Disallow적합
검색 결과 제외noindex부적합
이미 색인된 URL 삭제noindex 또는 404/410부적합
서버 요청 감소robots.txt Disallow적합

정리하면 이렇습니다.

Disallow는 “들어오지 마”이고, noindex는 “검색 결과에 넣지 마”입니다.

문제는 두 가지를 잘못 섞었을 때 생깁니다. 이미 색인된 페이지를 지우고 싶은데 robots.txt로 막아버리면, 검색엔진은 그 페이지 안에 들어갈 수 없습니다. 들어갈 수 없으니 페이지 안에 있는 noindex도 읽을 수 없습니다.

즉, 막았기 때문에 지울 수 없는 상황이 됩니다.

색인 삭제를 위한 올바른 순서

색인을 빼는 목적이라면 순서를 바꿔야 합니다. 급하다고 바로 Disallow를 넣는 것이 아니라, 먼저 크롤러가 페이지를 다시 확인할 수 있게 열어줘야 합니다.

1단계: robots.txt 차단 해제

User-agent: *
# Disallow: /games_html/

이미 막아둔 폴더라면 일단 주석 처리하거나 제거합니다. 색인을 삭제하려면 검색엔진이 해당 페이지에 접근할 수 있어야 합니다.

2단계: 페이지에 noindex 추가

공통 헤더가 있다면 해당 폴더에만 noindex가 출력되도록 처리합니다.

<?php
$path = $_SERVER['REQUEST_URI'] ?? '';

if (strpos($path, '/games_html/') === 0) {
    echo '<meta name="robots" content="noindex,follow">' . "\n";
}
?>

noindex,follow로 둔 이유는 페이지 자체는 검색 결과에서 빼고 싶지만, 그 안의 링크는 계속 따라가게 하고 싶었기 때문입니다. 단순히 오래된 목록 페이지를 정리하는 상황이라면 nofollow까지 넣을 필요는 없었습니다.

3단계: 실제 출력 확인

코드를 넣었다고 끝내면 안 됩니다. 검색엔진이 보는 응답에 noindex가 실제로 들어갔는지 확인해야 합니다.

curl -s -A "Mozilla/5.0" https://example.com/games_html/old.html | grep -i "noindex"

또는 브라우저에서 페이지 소스를 열어 아래 태그가 보이는지 확인합니다.

<meta name="robots" content="noindex,follow">

4단계: 색인 상태 확인 후 다시 차단

검색 결과에서 충분히 빠진 뒤에 robots.txt 차단을 다시 넣습니다.

User-agent: *
Disallow: /games_html/

이 순서가 중요합니다.

열어준다 → noindex를 읽게 한다 → 색인에서 빠진다 → 다시 막는다

처음부터 막으면 빠지는 속도가 빨라지는 것이 아니라, 오히려 삭제 신호를 전달하지 못합니다.

폴더 자체를 없앨 때는 410 응답

오래된 파일을 유지할 이유가 없다면 noindex보다 더 명확한 방법도 있습니다. 페이지가 영구적으로 사라졌다는 신호를 주는 것입니다.

<?php
header('HTTP/1.1 410 Gone');
include __DIR__ . '/error/410.php';
exit;

410은 “이 페이지는 영구적으로 없어졌다”는 의미입니다. 단순 404보다 의도가 명확해서 오래된 URL 정리에 유용합니다.

다만 나중에 다시 살릴 가능성이 있다면 410은 신중하게 써야 합니다. 임시로 없는 페이지라면 404가 더 안전할 수 있습니다.

여기서도 robots.txt로 먼저 막으면 안 됩니다. 검색엔진이 410 응답을 봐야 색인에서 뺄 수 있기 때문입니다.

robots.txt가 필요한 위치

robots.txt가 쓸모없는 것은 아닙니다. 다만 목적이 다릅니다. 색인 삭제 도구가 아니라 크롤링 제어 도구로 봐야 합니다.

제가 실제로 남겨둔 규칙은 이런 쪽에 가까웠습니다.

User-agent: *
Disallow: /admin/
Disallow: /inc/
Disallow: /*/print$
Disallow: /*?sort=

Sitemap: https://example.com/sitemap.xml

이런 경로는 robots.txt로 막는 것이 도움이 됩니다.

  • 관리자 폴더처럼 검색에 나올 필요가 없는 경로
  • include, library 같은 내부 파일 경로
  • 본문과 중복되는 인쇄용 페이지
  • 정렬 파라미터처럼 조합이 무한히 늘어나는 URL
  • 서버 요청만 늘리는 불필요한 크롤링 경로

공통점은 “색인에서 지워야 하는 페이지”라기보다 “애초에 크롤링을 줄이고 싶은 경로”라는 점입니다.

숨길 경로를 robots.txt에 쓰는 위험

robots.txt는 공개 파일입니다. 누구나 아래 주소로 볼 수 있습니다.

https://example.com/robots.txt

그래서 숨기고 싶은 관리자 경로나 비공개 파일 경로를 robots.txt에 자세히 적는 것은 좋은 보안 방법이 아닙니다.

User-agent: *
Disallow: /secret-admin-path/
Disallow: /private-backup/

이렇게 적으면 검색엔진에게만 막는 것이 아니라, 사람에게도 “이런 경로가 있다”고 알려주는 셈이 됩니다. 보안이 필요한 곳은 robots.txt가 아니라 로그인, 권한 체크, 서버 접근 제한으로 막아야 합니다.

robots.txt는 보안 장치가 아니라 크롤러 안내문에 가깝습니다.

적용 후 확인한 변화

순서를 바꾼 뒤에는 검색 결과가 바로 사라지지는 않았습니다. 하지만 며칠 단위로 조금씩 줄어드는 것이 보였습니다.

  • 오래된 폴더 URL이 검색 결과에서 점차 빠짐
  • “정보를 제공할 수 없습니다” 문구가 붙은 결과가 줄어듦
  • 색인 정리 후 Disallow를 다시 넣어 크롤링 요청 감소
  • 유효한 페이지 중심으로 크롤링 빈도 개선
  • robots.txt와 noindex 역할을 분리해서 관리 가능

중요한 것은 robots.txt를 넣었다고 즉시 색인 삭제가 되는 것이 아니라는 점입니다. 검색엔진이 다시 방문하고, noindex나 410 신호를 확인하고, 그 뒤에 결과에서 제외하는 시간이 필요했습니다.

배포 전 확인할 체크리스트

먼저 열어주고 나중에 막기

robots.txt는 검색 결과에서 페이지를 지우는 도구가 아닙니다. 크롤러가 들어오지 않게 막는 도구입니다. 그래서 이미 색인된 페이지를 삭제하려는 상황에서는 순서를 잘못 잡으면 오히려 정리가 늦어집니다.

제가 겪은 문제도 그랬습니다. 오래된 폴더를 빨리 없애고 싶어서 Disallow를 먼저 넣었지만, 그 때문에 검색엔진은 noindex나 410 신호를 볼 수 없었습니다.

색인 삭제가 목적이라면 순서는 반대입니다. 먼저 열어주고, 삭제 신호를 보여주고, 검색 결과에서 빠진 뒤 다시 막아야 합니다. robots.txt는 마지막에 쓰는 차단 도구이지, 이미 잡힌 검색 결과를 지우는 버튼이 아니었습니다.

댓글 남기기