둘은 다른 것을 막는다
이름이 비슷해 헷갈리지만 막는 대상이 다릅니다.
| robots.txt Disallow | noindex | |
|---|---|---|
| 막는 것 | 페이지를 읽는 것 | 검색 결과에 넣는 것 |
| 적는 곳 | 사이트 루트의 파일 | 페이지의 meta 태그 또는 응답 헤더 |
| 크롤러 동작 | 요청하지 않음 | 읽은 뒤 색인하지 않음 |
함께 쓰면 안 되는 이유
이게 가장 자주 나오는 실수입니다.
크롤러가 noindex를 보려면 페이지를 읽어야 합니다. 그런데 robots.txt로 막아두면 애초에 읽지 못합니다. noindex가 페이지에 있어도 크롤러는 그걸 볼 수 없습니다.
결과는 반대가 됩니다. 다른 사이트가 링크를 걸어두면 검색엔진은 그 주소의 존재를 알게 되고, 내용을 읽지 못한 채로 주소만 검색 결과에 남길 수 있습니다. 제목도 설명도 없이 주소만 뜨는 상태입니다.
빼려고 한 페이지가 더 이상해진 모습으로 남는 셈입니다.
목적별로 무엇을 쓰나
검색 결과에 안 나오게 하고 싶다
noindex를 쓰고 robots.txt로는 막지 않습니다.
<meta name="robots" content="noindex, follow">
HTML이 아닌 파일(PDF 등)은 응답 헤더로 넣습니다.
X-Robots-Tag: noindex
색인에서 빠진 것을 확인한 뒤에도 robots.txt로 막을 필요는 없습니다.
아무도 못 보게 하고 싶다
서버에서 인증을 겁니다. robots.txt도 noindex도 접근을 막지 못합니다. 주소를 아는 사람은 그대로 들어옵니다.
크롤 부하를 줄이고 싶다
robots.txt를 씁니다. 검색 결과에 넣을 생각이 없고 크롤러가 굳이 읽을 필요도 없는 경로(내부 API, 무한히 생성되는 필터 조합 등)가 대상입니다.
follow와 nofollow
noindex와 함께 쓰는 값입니다.
noindex, follow— 이 페이지는 색인하지 않지만 링크는 따라간다noindex, nofollow— 색인도 하지 않고 링크도 따라가지 않는다
대체로 follow를 쓰는 편이 낫습니다. 색인하지 않을 페이지라도 그 페이지에서 나가는 링크는 다른 페이지를 발견하는 통로가 됩니다.
확인 방법
페이지 소스에서 meta robots를 보고, 응답 헤더에 X-Robots-Tag가 있는지도 확인합니다. 둘 다 있으면 더 강한 쪽이 적용되므로 한쪽만 보고 판단하면 안 됩니다.
그리고 robots.txt에서 그 경로가 막혀 있지 않은지 대조합니다. 막혀 있다면 noindex가 무력화된 상태입니다.
색인에서 빠지는 데 걸리는 시간
즉시가 아닙니다. 크롤러가 그 페이지를 다시 방문해 noindex를 읽어야 반영됩니다. 급하면 서치 콘솔의 삭제 도구로 임시 조치를 할 수 있지만, 근본 해결은 noindex가 읽히는 것입니다.