웹사이트를 오픈하고 구글 Search Console에서 색인 생성 여부를 확인하다가 '크롤링됨 - 현재 색인 생성되지 않음' 메세지를 보고 당황한 적이 있을 것이다. 구글봇이 내 사이트에 방문해서 페이지를 분명 읽어갔는데도 정작 구글 검색 결과에는 등록해주지 않는 기이한 상황이다.
다만 많은 개발자나 사이트 관리자들은 정확한 원인을 모른 채 무작정 Search Console의 '색인 생성 요청' 버튼만 반복해서 누르곤 한다. 이번에는 이 오류가 정확히 무엇을 의미하는지, 구글봇이 색인을 거부하는 4가지 명확한 이유와 이를 해결하는 실무 적용 방법을 완벽하게 정리해서 소개하겠다.
구글 검색 엔진이 웹페이지를 검색 결과에 노출하는 과정은 크게 4단계로 나뉜다. 페이지 URL 발견(Discovery) → 수집(Crawling) → 색인 등록(Indexing) → 검색 결과 노출(Ranking) 순서다.
'크롤링됨 - 현재 색인 생성되지 않음(Crawled - currently not indexed)'은 2단계인 수집(크롤링)까지는 정상적으로 완료되었으나, 3단계인 색인 등록 과정에서 구글 시스템이 해당 페이지를 데이터베이스에 포함시키지 않고 재껴둔 상태를 뜻한다.
| 상태 상태값 | 구글봇의 동작 상황 | 주요 원인 및 의미 |
|---|---|---|
| 크롤링됨 - 현재 색인 생성되지 않음 | 페이지 HTML 데이터를 수집함 | 콘텐츠 가치 부족, 중복 페이지, 기술적 렌더링 문제로 색인 유예 |
| 발견됨 - 현재 색인 생성되지 않음 | URL 목록만 확인하고 아직 방문 안 함 | 크롤링 예산 부족, 서버 응답 지연, 사이트 전체 품질 저하 |
구글봇이 페이지를 읽어간 뒤 색인을 거부하는 이유는 크게 네 가지다. 각 원인을 차례대로 점검하고 수정해야 한다.
페이지에 텍스트 양이 극히 적거나, 단순 이미지 한두 장만 있거나, 다른 페이지의 내용을 거의 그대로 복사한 경우다. 구글은 검색 사용자에게 가치를 제공하지 못하는 무의미한 페이지를 색인에서 제외한다.
React, Vue 같은 Single Page Application(SPA) 구조에서 구글봇이 초기 HTML을 가져갔을 때, 실제 콘텐츠는 JavaScript가 실행된 후에야 비동기로 로드되는 경우가 있다. 구글봇의 2차 렌더링 큐에서 타임아웃이 발생하거나 스크립트 실행이 실패하면 빈 페이지로 인식되어 색인이 누락된다.
사이트 내에 유사한 URL이 여러 개 존재하지만 표준화 태그(Canonical)가 누락되었거나, 다른 페이지에서 해당 URL로 들어오는 내부 링크가 전혀 없는 외딴 페이지(Orphan Page)인 경우 구글은 이 페이지의 중요도를 낮게 평가한다.
게시판의 정렬(sort), 필터(filter), 페이징(page) 파라미터로 인해 원본과 99% 동일한 페이지가 다량 생성되면, 구글봇은 주 원본 페이지 하나만 색인하고 나머지는 전부 '색인 생성되지 않음' 처리한다.
이 문제를 해결하기 위해서는 구글봇이 페이지에 접근했을 때 완성된 데이터와 명확한 메타 신호를 한번에 받아볼 수 있도록 개편해야 한다.
아래와 같이 서버에서 비어있는 div 태그만 내려주고 JavaScript로 텍스트를 채우면, 구글봇 수집 시점에 아무 내용도 없는 저품질 페이지로 판단된다.
<!DOCTYPE html>
<html lang="ko">
<head>
<title>상품 상세 페이지</title>
</head>
<body>
<!-- 잘못된 예: 초기 HTML에 본문 내용이 전혀 없음 -->
<div id="app"></div>
<script src="/js/app.js"></script>
</body>
</html>
서버 측에서 본문 콘텐츠, Open Graph, canonical 태그, 구조화된 데이터를 완벽히 조합하여 최초 응답 시점에 내려준다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>PHP PDO 인젝션 방어 가이드 - REDINFO</title>
<meta name="description" content="PHP PDO Prepared Statement를 사용해 SQL 인젝션을 완벽하게 방어하는 실무 가이드를 제공합니다.">
<link rel="canonical" href="https://example.com/posts/php-pdo-security" />
<!-- Schema.org 구조화된 데이터 제공 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "PHP PDO 인젝션 방어 가이드",
"description": "PHP PDO Prepared Statement 실무 활용법"
}
</script>
</head>
<body>
<article>
<h1>PHP PDO 인젝션 방어 가이드</h1>
<p>웹 애플리케이션 보안에서 가장 기본이 되는 SQL 인젝션 방어 기법을 설명합니다. 사용자 입력을 직접 쿼리문에 결합하지 않고 Prepared Statement를 사용해야 합니다...</p>
</article>
</body>
</html>
✗ 색인 생성 요청 버튼만 수십 번 재요청한다.
콘텐츠나 코드의 변화 없이 요청 버튼만 누르는 것은 전혀 효과가 없다. 구글 알고리즘은 동일한 페이지 구조에 대해 똑같은 색인 거부 판정을 내린다.
✓ 구글 Search Console의 'URL 검사' 도구에서 '실시간 URL 테스트'를 실행한다.
실시간 테스트 후 '캡처된 페이지 보기' 메뉴에서 구글봇이 실제로 렌더링한 화면과 HTML 코드를 확인해야 한다. 여기서 텍스트가 누락되었거나 CSS/JS 파일이 403, 404 에러로 블로킹되어 있는지 먼저 체크하는 것이 순서다.
✗ 게시물 목록 페이지를 noindex 처리하거나 사이트맵에서 빼버린다.
상세 페이지로 이동할 수 있는 내부 링크 통로인 목록 페이지를 막아버리면 상세 페이지가 '외딴 페이지'가 되어 색인 우선순위에서 밀리게 된다.
✓ 상위 카테고리 및 관련 추천 글 연관 링크를 상세 페이지 하단에 배치한다.
구글봇이 사이트 내부 구조를 촘촘하게 크롤링할 수 있도록 텍스트 링크 기반의 내부 네트워크를 형성해 주어야 한다.
'크롤링됨 - 현재 색인 생성되지 않음'은 기술적 에러라기보다 구글 검색 엔진이 해당 페이지의 품질이나 구조적 가치를 보류한 상태다. 고유한 콘텐츠 확보, 서버 사이드 렌더링(SSR) 적용, canonical 태그 정리를 최우선으로 진행해야 한다.
크롤링됨 - 현재 색인 생성되지 않음 이슈는 웹사이트의 전체적인 품질과 유기적인 구조를 정비하는 과정이다. 작은 최적화와 올바른 HTML 구조화 습관이 모여서 검색 노출 극대화라는 큰 효과를 만든다는 점을 잊지 말자. 이 글의 실시간 URL 테스트 부분과 canonical 태그 설정을 참고해 수정 후 재검증을 진행하면, 구글 검색 결과에 정상적으로 노출되는 최종 결과를 얻을 수 있을 것이다.