의심했던 페이지는 안전했고, 진짜 물린 곳은 따로 있었다
한눈에 답변
로봇 규칙과 검색 제외 설정의 관계를 다시 점검하면서, 크롤이 막히면 검색 제외 표시 자체를 검색엔진이 읽을 수 없다는 원리를 확인했다. 처음 의심한 검색 페이지는 실제로는 그 페이지로 가는 링크가 전혀 없어 위험이 거의 없었다. 정작 진짜로 이 문제에 걸려 있던 것은 모든 페이지 하단에서 예외 없이 링크되는 다른 세 페이지였다.
확인하려던 원리는 무엇이었나
로봇 규칙으로 크롤을 막아 둔 주소는 검색엔진이 그 내용을 읽을 수 없다는 원리를 다시 짚었다. 이 말은 그 페이지 안에 심어 둔 검색 제외 지시문도 검색엔진이 볼 수 없다는 뜻이다. 그런데 이런 페이지도 다른 곳에서 링크만 걸려 있으면 검색엔진이 그 존재를 알게 될 수는 있다. 즉 최악의 경우 제목도 설명도 없는 빈 주소만 검색 결과에 남을 수 있는 조합이 생긴다.
처음 의심한 곳은 실제로 위험했나
검색 결과 페이지를 가장 먼저 의심했다. 그런데 실제로 확인해 보니 사이트 안 어디에도 이 페이지로 연결되는 링크가 없었다 — 사이트맵에도 없고, 사람이 직접 검색창에 입력해야만 들어갈 수 있는 구조였다. 발견될 경로 자체가 없으니 위험은 크지 않았다. 그래도 혹시 몰라 차단 범위를 검색어가 붙는 형태로만 좁혀서, 검색어 없는 기본 주소는 크롤이 되어 검색 제외 지시문이 정상적으로 읽히게 했다.
진짜 문제는 어디에 있었나
실제로 이 문제에 걸려 있던 것은 개인 페이지, 즐겨찾기 페이지, 의견 보내기 페이지 세 곳이었다. 셋 다 검색 제외 지시문과 로봇 차단이 동시에 걸려 있었는데, 공통 헤더와 푸터가 모든 페이지에서 이 세 곳을 링크하고 있었다 — 의견 보내기 버튼은 모든 화면에 떠 있는 구조였다. 발견은 되는데 검색 제외 지시문은 못 읽는, 가장 나쁜 조합이었다.
어떻게 해결했나
이 세 페이지를 로봇 차단 목록에서 뺐다. 크롤이 허용되면 검색 제외 지시문을 정상적으로 읽을 수 있고, 그러면 이 페이지들은 검색 결과에 아예 나타나지 않게 된다. 차단 목록에서 빠지는 주소가 단 세 개뿐이라 크롤 예산에 미치는 영향도 미미했다.
남겨 둔 것은 무엇인가
정렬이나 필터가 붙는 주소는 그대로 차단 상태로 남겼다. 이유는 규모였다 — 목록 경로가 2,400여 개인데 여기에 정렬·필터 조합을 곱하면 2만 개가 넘고, 전부 대표 주소의 사본에 지나지 않는다. 이런 대량의 사본형 주소는 크롤 자체를 막아 두는 것이 맞는 방식이라고 판단했다.