사이트맵과 robots.txt 는 늘 짝으로 언급되지만 반대말이 아닙니다. 하나는 “여기를 봐 주세요” 라는 목록이고, 다른 하나는 “여기는 가져가지 마세요” 라는 요청입니다. 그리고 두 번째 문장이 실무에서 자주 오해받습니다 — 가져가지 말라는 것과 검색에 내보내지 말라는 것은 다른 말입니다.
사이트맵 — 찾아 주길 바라는 주소의 목록
사이트맵은 우리 사이트의 주소를 정리해 둔 파일입니다. 워드프레스에서는 SEO 플러그인이나 코어가 자동으로 만들어 주므로 마케터가 손으로 쓸 일은 없고, 대신 내용이 맞는지 확인하는 일이 남습니다.
사이트맵은 명령이 아니라 추천 목록입니다. 여기 실렸다고 반드시 색인되지 않고, 여기 없다고 색인되지 않는 것도 아닙니다. 다만 목록의 품질은 신뢰에 영향을 줍니다 — 우리가 “찾아 달라” 고 적어 둔 주소가 열리지 않거나 다른 곳으로 넘어가면, 그 목록 전체가 덜 믿음직해집니다.
사이트맵은 자동 생성이라 우리가 화면에서 없앤 주소를 계속 싣는 일이 생깁니다. 은퇴시킨 페이지, 색인하지 않기로 한 아카이브, 시험용으로 만든 글이 목록에 남아 있는 경우가 실제로 흔합니다. 분기에 한 번은 사이트맵을 열어 실제로 훑어보는 것이 좋습니다.
robots.txt — 크롤을 막지, 색인을 막지 않습니다
여기가 이 회차의 핵심입니다. robots.txt 는 크롤러에게 “이 경로는 요청하지 말아 달라” 고 알리는 파일입니다. 요청하지 말라는 것이지 검색 결과에 넣지 말라는 뜻이 아닙니다.
그래서 이런 일이 생깁니다. 어떤 페이지를 robots.txt 로 막아 두었는데, 다른 사이트나 우리 사이트의 다른 페이지가 그 주소로 링크를 걸고 있으면 검색엔진은 링크만 보고도 그 주소가 존재한다는 것을 알게 됩니다. 그리고 내용을 못 읽은 채로 주소를 결과에 실을 수 있습니다 — 설명 문장이 비어 있거나 “이 페이지의 정보를 사용할 수 없습니다” 같은 문구가 붙은 결과가 그것입니다.
둘을 겹쳐 쓸 때 생기는 함정
가장 흔한 사고는 noindex 를 붙인 페이지를 robots.txt 로도 막는 것입니다. 확실히 하려고 두 겹으로 조치한 것인데 결과는 반대입니다 — 크롤러가 페이지를 못 읽으니 안에 적힌 noindex 도 못 읽습니다. 검색에서 빼고 싶다면 읽을 수 있게 열어 두고 noindex 를 쓰는 것이 정확한 조치입니다.
또 하나, 스타일이나 스크립트가 있는 경로를 통째로 막아 두면 렌더 단계가 왜곡됩니다. 1회차에서 본 단계 중 세 번째가 여기서 실패합니다 — 크롤은 됐는데 검색엔진이 본 화면이 우리가 보는 화면과 달라지는 것입니다.
이 구분을 포함한 색인 정책 전반은 SEO 아카이브에서 이어지고, 어떤 주소를 열고 어떤 주소를 닫을지 설계까지 맡기려면 최적화 지원 사업이 그 작업을 포함합니다.
다음 회차
열어 둔 주소가 너무 많은 것도 문제가 됩니다. 다음 회차는 필터와 정렬이 만들어 내는 비슷비슷한 주소들, 그리고 canonical 이 하는 일입니다.