검색 결과에서 사라지고 싶은 페이지가 있다면, 문 앞에 안내문을 붙이면 될까요, 아예 문을 잠가야 할까요, 아니면 다른 방으로 이사했다고 알려야 할까요.
웹사이트의 색인을 조절할 때 쓰는 robots.txt, noindex, 리디렉션은 모두 비슷해 보이지만 맡은 일이 다릅니다. 셋을 헷갈리면 숨기려던 페이지가 검색에 남거나, 반대로 중요한 페이지가 조용히 사라질 수 있습니다.
세 신호는 같은 말을 하는 듯 다른 일을 한다
먼저 robots.txt는 검색 로봇에게 “이 주소는 들어오지 마세요”라고 알리는 문입니다. 구글 서치 센터에 따르면 robots.txt는 페이지를 검색 결과에서 삭제하는 장치가 아니라, 로봇이 특정 주소를 요청할지 조절하는 장치입니다.
따라서 robots.txt로 막은 페이지가 검색 결과에 절대 나오지 않는다고 생각하면 곤란합니다. 다른 웹페이지가 그 주소로 링크하면 구글은 페이지 내용을 보지 못한 채 주소만 검색 결과에 표시할 수도 있습니다.
noindex는 조금 더 직접적입니다. 페이지를 구글이 읽을 수 있게 열어 둔 뒤, “내용은 확인하되 검색 결과에는 넣지 마세요”라고 말하는 신호입니다.
구글이 페이지를 실제로 방문해 noindex를 읽어야 효과가 생깁니다. robots.txt가 먼저 문을 잠그고 있으면 구글은 noindex라는 안내문을 볼 수 없습니다.
리디렉션은 “이 주소는 이제 저 주소를 이용하세요”라는 이사 안내입니다. 예전 글 주소를 새 글 주소로 옮겼거나, 여러 주소를 하나로 합칠 때 사용합니다.
영구 이동을 뜻하는 301이나 308 리디렉션은 새 주소를 대표 주소로 삼으라는 강한 신호가 됩니다. 반면 302나 307은 잠시 다른 곳으로 보내는 임시 이동에 가깝습니다.
무엇이 더 센가보다 먼저 목적을 골라야 한다
세 신호의 우선순위를 한 줄로 줄이면 이렇게 볼 수 있습니다. “읽지 못하게 하려면 robots.txt, 읽게 하되 검색에서 빼려면 noindex, 주소를 바꾸려면 리디렉션”입니다.
하지만 이것은 힘겨루기 순서가 아닙니다. 빨간불, 출입 금지 표지판, 이사 안내문을 놓고 어느 것이 더 강한지 따지는 것과 비슷합니다. 자동차가 지나가지 않게 하려는지, 주차는 허용하되 사진에는 나오지 않게 하려는지에 따라 표지판이 달라집니다.
- 검색 로봇의 방문 자체를 줄이고 싶다: robots.txt
- 페이지는 열어 두되 검색 결과에서 빼고 싶다: noindex
- 페이지가 새 주소로 영구 이동했다: 301 또는 308 리디렉션
- 잠시 다른 페이지로 보내고 원래 주소를 유지하고 싶다: 302 또는 307 리디렉션
예를 들어 쇼핑몰의 내부 검색 결과나 끝없이 늘어나는 필터 주소는 robots.txt를 검토할 수 있습니다. 이런 주소를 모두 읽게 두면 구글 로봇이 중요한 상품 설명보다 “검은색, 작은 사이즈, 무료 배송” 같은 조합 페이지를 더 많이 돌아다닐 수 있기 때문입니다.
반면 고객에게 보여 주는 감사 페이지, 로그인 뒤에만 필요한 임시 안내 페이지, 검색 결과에 노출할 이유가 없는 내부 자료는 noindex가 더 알맞습니다. 구글이 페이지를 읽어도 되지만 검색 목록에는 올리지 말라는 뜻이기 때문입니다.
가장 흔한 실수는 noindex 앞에서 문을 잠그는 일이다
실무에서 자주 생기는 문제는 “검색에 안 나오게 하자”는 목표로 robots.txt와 noindex를 동시에 쓰는 경우입니다. 겉보기에는 보안이 두 배로 좋아진 듯하지만, 실제로는 구글이 noindex를 읽지 못하는 구조가 될 수 있습니다.
가령 주소가 오래된 이벤트 페이지라고 해 보겠습니다. robots.txt에서 해당 경로를 막으면 구글은 페이지에 들어가지 못합니다.
페이지 안에 noindex가 있어도 구글 입장에서는 닫힌 가게 유리창에 붙은 안내문과 같습니다. 안에 뭐가 쓰였는지 볼 수 없습니다.
그 결과 검색 결과에서 주소가 한동안 남거나, 설명 없이 주소만 나타날 수 있습니다. 이미 검색에 노출된 페이지를 확실히 빼려면 페이지를 열어 둔 상태에서 noindex를 읽게 하고, 필요하면 서치 콘솔의 URL 검사에서 다시 확인해야 합니다.
또 다른 함정은 리디렉션 뒤에 noindex를 붙이는 경우입니다. 예전 주소를 새 주소로 옮겼다면, 예전 주소에는 보통 영구 리디렉션을 두고 새 주소는 정상적으로 색인될 수 있게 해야 합니다.
새 주소까지 noindex로 막으면 방문자는 도착했는데 검색 로봇은 “여기는 입장 불가”라는 말을 듣게 됩니다. 이사한 집의 현관문에 주소를 붙여 놓고 동시에 출입 금지 팻말을 세우는 셈입니다.
직접 고칠 때 막히는 지점
문제는 설정 위치가 하나가 아니라는 데 있습니다. robots.txt는 보통 사이트 최상위 경로에 있고, noindex는 HTML 문서의 머리 부분이나 서버 응답에 들어가며, 리디렉션은 서버나 호스팅 설정에서 관리합니다.
사이트 운영자는 한 곳만 고쳤다고 생각하지만, 실제 페이지에는 예전 플러그인의 noindex, 서버의 301, 콘텐츠 관리 도구의 자동 주소 설정이 동시에 남아 있을 수 있습니다. 서로 다른 사람이 만든 지시문 세 개가 한 페이지에서 회의 중인 셈입니다.
특히 리디렉션이 여러 번 이어지면 방문자가 최종 페이지에 도착하기까지 시간이 늘어납니다. 구글은 여러 단계의 리디렉션을 따라갈 수 있지만, 구글 서치 센터는 최종 주소로 직접 보내고 긴 연결 고리를 피하라고 안내합니다.
직접 해결할 때의 또 다른 한계는 “내 브라우저에서는 잘 열린다”와 “구글이 같은 방식으로 읽었다”가 다를 수 있다는 점입니다. 브라우저는 로그인 정보나 자바스크립트 실행 결과를 갖고 있지만, 검색 로봇은 다른 조건에서 페이지를 확인할 수 있습니다.
리디렉션은 주소를 바꾸고, canonical은 대표를 추천한다
여기서 자주 함께 등장하는 것이 canonical, 즉 대표 주소를 알려 주는 설정입니다. 비슷한 내용의 주소가 여러 개 있을 때 “이 중 대표는 이것”이라고 추천하는 장치입니다.
구글 서치 센터는 대표 주소를 정하는 신호 가운데 영구 리디렉션은 강한 신호, canonical 링크도 강한 신호, 사이트맵에 넣는 것은 비교적 약한 신호라고 설명합니다. 다만 구글은 이런 신호를 참고해 최종 대표 주소를 스스로 판단할 수 있습니다.
그래서 비슷한 페이지를 검색에서 완전히 제외하려는 목적이라면 noindex가 맞을 수 있습니다. 반대로 같은 상품이 주소만 달리해 여러 번 보이는 문제라면 canonical이나 영구 리디렉션으로 대표 주소를 정하는 편이 더 자연스럽습니다.
예를 들어 오래된 글 주소와 새 글 주소가 모두 같은 내용을 보여 준다면, 새 글로 완전히 옮겼을 때는 301을 사용합니다. 두 주소가 당분간 함께 필요하지만 대표 글만 알려 주고 싶다면 canonical을 검토할 수 있습니다.
둘을 구분하지 않으면 좋은 글까지 noindex로 지워 버리는 일이 생깁니다. 검색 결과에서 한 명만 뽑아야 하는데 선수 전원을 퇴장시키는 식입니다.
서치 콘솔에서 확인할 때는 신호보다 결과를 보자
설정을 끝냈다면 “코드를 넣었으니 됐다”고 생각하지 말고 실제 결과를 확인해야 합니다. 서치 콘솔의 URL 검사에서는 구글이 해당 주소에 접근할 수 있는지, noindex를 발견했는지, 어떤 주소를 대표로 선택했는지 살펴볼 수 있습니다.
새 글을 색인시키고 싶을 때는 robots.txt가 중요한 페이지를 막고 있지 않은지 먼저 봅니다. 검색에서 빼고 싶은 페이지는 구글이 접근할 수 있는지 확인한 뒤 noindex가 실제 응답에 포함됐는지 점검합니다.
주소를 옮긴 페이지는 최종 목적지로 한 번에 이동하는지 확인합니다. 옛 주소가 중간 주소를 거쳐 또 다른 주소로 가면 방문자도 지치고 로봇도 “여행 계획이 꽤 복잡하군요”라고 생각할 만합니다.
- 중요한 페이지가 차단되지 않았는가
- 검색에서 뺄 페이지는 noindex를 읽을 수 있는가
- 영구 이동은 301 또는 308으로 처리했는가
- 리디렉션이 최종 주소로 바로 연결되는가
- 사이트맵에 검색시키고 싶지 않은 주소가 들어 있지 않은가
색인 제어는 검색 로봇을 속이는 기술이 아니라, 사이트의 길 안내를 정확하게 만드는 일입니다. 중요한 페이지에는 문을 열고 길을 연결하며, 필요 없는 페이지에는 목적에 맞는 안내를 붙여야 합니다.
가장 안전한 순서는 페이지의 운명을 먼저 정하는 것입니다. 계속 검색되어야 하는지, 검색에서 빠져야 하는지, 아니면 새 주소로 이사했는지를 결정한 뒤 신호를 하나씩 맞추면 됩니다.
SOHO SEO로 워드프레스 색인 신호 관리하기
이 글의 신호를 워드프레스에서 실제로 관리할 때는 noindex 대상, 사이트맵, 오래된 주소를 따로 확인해야 합니다. SOHO SEO의 noindex management는 날짜·작성자·태그·검색 결과와 선택한 분류 보관 페이지에 noindex 설정을 적용하고, Sitemap에서는 일반 XML 사이트맵과 Google News 사이트맵을 관리할 수 있습니다.
주소가 깨졌거나 이전 주소를 새 주소로 연결해야 한다면 Redirects에서 301, 302, 410 연결을 만들고 주소 패턴과 방문 횟수를 관리하며 404 발생을 기록할 수 있습니다. Site Error Check (key search engine items)은 robots.txt와 이 플러그인이 제공하는 사이트맵을 하루 한 번 확인하고 문제가 있을 때 이메일을 보냅니다.
다만 noindex management는 게시물과 페이지 전체를 일괄 noindex로 만드는 기능이 아니며, Redirects에서 DNS나 robots.txt, 고유주소 구조 자체를 변경하는 기능도 아닙니다. 따라서 페이지의 운명을 먼저 정한 뒤, 각 설정이 담당하는 범위에 맞춰 사용하는 것이 정확합니다.
자주 묻는 질문
Q. robots.txt로 막으면 검색 결과에서 완전히 사라지나요?
A. 아닙니다.
구글이 페이지를 읽지 못해도 다른 페이지의 링크를 통해 주소를 발견할 수 있습니다. 검색 결과에서 빼는 목적이라면 noindex나 비공개 설정을 검토해야 합니다.
Q. noindex와 robots.txt를 함께 사용해도 되나요?
A. 목적이 다르다면 함께 쓰는 경우도 있지만, noindex를 읽혀야 하는 페이지까지 robots.txt로 막으면 안 됩니다. 검색에서 제외할 페이지는 구글이 접근해 noindex를 확인할 수 있어야 합니다.
Q. 오래된 주소를 새 주소로 바꿀 때는 어떤 리디렉션을 써야 하나요?
A. 영구적으로 옮겼다면 서버에서 처리하는 301 또는 308 리디렉션이 적합합니다. 잠시만 다른 주소로 보내는 상황이라면 302나 307을 고려합니다.
Q. 내 사이트에서는 무엇이 어디에서 막혔는지 어떻게 확인하나요?
A. 서치 콘솔의 URL 검사에서 차단 여부, noindex 발견 여부, 대표 주소, 리디렉션 결과를 차례로 확인하세요. 브라우저에서 열리는 것만으로는 구글이 같은 내용을 봤다고 단정할 수 없습니다.
Q. 이 문제를 도구로 쉽게 해결할 수 있나요? 어떤 도구를 쓰면 되나요?
A. 서치 콘솔의 URL 검사와 페이지 색인 보고서가 기본 도구입니다. 여러 주소의 상태를 한꺼번에 점검해야 한다면 서버 응답과 robots.txt, noindex를 함께 확인하는 웹 진단 도구를 사용할 수 있습니다.
Q. 워드프레스에서 오래된 주소와 404를 함께 확인하려면?
A. SOHO SEO의 Redirects에서는 301, 302, 410 연결을 만들고 주소 패턴과 방문 횟수를 관리하며 404 발생을 기록할 수 있습니다.
오래된 주소를 새 주소로 연결해야 하는 상황과 깨진 주소를 확인해야 하는 상황을 한 기능 범위에서 다룰 수 있습니다. 다만 DNS나 고유주소 구조 자체를 바꾸는 용도가 아니라, 워드프레스 안에서 연결과 기록을 관리하는 기능입니다.
워드프레스 관련 플러그인