신규 페이지를 올렸는데 며칠이 지나도 검색 결과에 안 뜬다. Google Search Console에 접속해보니 '발견됨'이라고는 하는데 색인이 생성되지 않은 상태다. 혹시 서버 문제가 있나 싶어 robots.txt도 확인하고, 메타 태그도 다시 점검했지만 여전하다. 개발자들은 보통 이 상황에서 멍하니 대기하거나, 무작정 재크롤링만 요청한다. 다만 대부분은 자신의 사이트가 구글 크롤러로부터 얼마나 많은 예산을 할당받고 있는지, 그 예산이 어디에 낭비되고 있는지 전혀 모른 채 문제를 방치한다. 이번에는 구글의 크롤링 예산이 정확히 뭔지, 왜 신규 페이지가 색인되지 않는지, 그리고 어떻게 예산을 최적화해서 검색 노출을 빠르게 늘릴 수 있는지 완벽하게 설명하겠다.

 

구글 크롤링 예산이란 무엇인가

구글은 당신의 사이트를 무한정 크롤링하지 않는다. 서버 부하, 네트워크 대역폭, 크롤러 리소스 등의 이유로 각 사이트마다 정해진 '크롤링 예산'을 할당한다. 이것은 일정 시간 동안 구글 크롤러가 당신의 사이트에서 요청할 수 있는 페이지 개수의 한계를 의미한다. 예를 들어 당신의 크롤링 예산이 하루 1,000페이지라면, 아무리 많은 페이지를 보유하고 있어도 구글은 하루에 1,000개의 URL만 크롤링한다는 뜻이다.

크롤링 예산은 두 가지 요소로 결정된다. 첫 번째는 '크롤 캐패시티'다. 이것은 구글 서버가 당신의 사이트를 크롤링할 수 있는 최대 능력을 의미한다. 보통 인프라가 좋고 응답 속도가 빠른 사이트일수록 더 높은 캐패시티를 할당받는다. 두 번째는 '크롤 수요'다. 이것은 구글이 당신의 사이트에서 크롤링해야 한다고 판단하는 우선순위를 의미한다. 인기 높은 페이지, 자주 업데이트되는 페이지, 검색 쿼리와 관련성 높은 페이지일수록 더 자주 크롤링된다.

 

신규 페이지가 크롤링 예산 소진으로 색인되지 않는 이유

새 페이지를 추가했는데도 색인이 되지 않는 가장 흔한 원인은 크롤링 예산이 불필요한 페이지에 낭비되고 있기 때문이다. 예를 들어 당신의 사이트에 다음 같은 페이지들이 많다면, 구글의 크롤링 예산이 전부 여기에 쓰여서 신규 페이지는 크롤링되지 못한다.

첫 번째는 '중복 콘텐츠'다. 같은 상품을 여러 URL로 표현하는 이커머스 사이트, 정렬 파라미터마다 다른 URL이 생기는 검색 페이지, 페이지네이션 URL(예: /page/1, /page/2, /page/3...) 같은 것들이다. 구글이 이런 중복 페이지들을 계속 크롤링하면 신규 페이지에 할당할 예산이 남지 않는다.

두 번째는 '저품질 페이지'다. 404 페이지, 빈 카테고리 페이지, 광고만 있는 페이지, 설정 폼이나 로그인 페이지 같은 것들이다. 이런 페이지들은 검색 결과에 나올 가치가 없지만, 구글이 발견하면 크롤링을 시도한다.

세 번째는 '외부 링크 페이지'다. 당신의 사이트 내부 링크에는 없지만, 외부 사이트에서 링크된 페이지들이다. 예를 들어 스팸 백링크가 많으면 구글이 불필요한 페이지를 계속 크롤링한다.

 

Google Search Console에서 크롤링 통계 확인하기

Search Console의 '크롤링' 메뉴에는 'Statistics' 섹션이 있다. 여기서 당신의 크롤링 상태를 상세히 볼 수 있다.

항목 의미
Crawl requests per day 하루 동안 구글이 당신의 사이트에 한 총 요청 수. 이것이 '크롤링 예산'이다.
Kilobytes downloaded per day 구글이 다운로드한 총 데이터양. 서버 부하의 직접적 지표다.
Time spent downloading a page (in milliseconds) 페이지당 평균 다운로드 시간. 이것이 높으면 당신의 서버 응답이 느리다는 뜻이다.

만약 'Crawl requests per day'가 평평하거나 심지어 내려가는 그래프를 보인다면, 구글이 당신의 사이트에 덜 관심을 두고 있다는 뜻이다. 한편 'Time spent downloading a page'가 매우 높다면(예: 500ms 이상), 구글은 응답 시간이 길어질 때마다 더 적은 수의 페이지를 크롤링한다.

 

크롤링 예산 최적화 5가지 전략

1. 중복 콘텐츠 제거 또는 Canonical 태그 설정

✗ 잘못된 것. 페이지네이션 URL이 모두 노출되도록 둔 채 신규 페이지 크롤링만 기대한다.

✓ 올바른 것. 정렬 파라미터가 있는 모든 페이지에 canonical 태그를 설정하고, 페이지네이션 페이지에는 rel="next"/rel="prev"를 적용한다.

<!-- 정렬 파라미터 제거 -->
<link rel="canonical" href="https://example.com/products" />

<!-- 페이지네이션 관계 명시 -->
<link rel="prev" href="https://example.com/products?page=1" />
<link rel="next" href="https://example.com/products?page=3" />

이렇게 하면 구글은 파라미터 변형을 따로 크롤링할 필요가 없다고 판단해서, 절약된 크롤링 예산을 신규 페이지에 할당한다.

2. robots.txt에서 불필요한 디렉토리 차단

✗ 잘못된 것. 설정 페이지, 캐시 디렉토리, 관리자 인터페이스까지 모두 크롤링 가능하게 둔다.

✓ 올바른 것. robots.txt에서 검색 결과에 나올 필요 없는 경로를 명시적으로 차단한다.

User-agent: *
Disallow: /admin/
Disallow: /api/
Disallow: /settings/
Disallow: /?sort=
Disallow: /?filter=
Allow: /

이렇게 하면 구글이 불필요한 페이지를 크롤링하려는 시도 자체를 하지 않아서, 크롤링 예산 손실이 크게 줄어든다.

3. 서버 응답 속도 개선

Search Console의 'Time spent downloading a page'가 500ms 이상이라면, 구글 크롤러도 느린 응답으로 인해 스트레스를 받는다. 구글은 느린 사이트의 크롤링 예산을 자동으로 줄인다.

✗ 잘못된 것. 서버 응답 시간이 1초 이상이어도 무시한다.

✓ 올바른 것. PHP 최적화, 데이터베이스 쿼리 캐싱, CDN 도입 등으로 응답 시간을 200ms 이하로 개선한다.

<?php
// ✗ 잘못된 것: 매 요청마다 데이터베이스 조회
$products = mysqli_query($conn, "SELECT * FROM products");

// ✓ 올바른 것: Redis 캐싱으로 응답 시간 단축
$cacheKey = 'products_list';
$products = $redis->get($cacheKey);
if (!$products) {
    $result = mysqli_query($conn, "SELECT * FROM products");
    $products = json_encode(mysqli_fetch_all($result, MYSQLI_ASSOC));
    $redis->setex($cacheKey, 3600, $products); // 1시간 캐싱
}
$products = json_decode($products, true);
?>

응답 시간이 빨라지면 구글은 같은 시간에 더 많은 페이지를 크롤링할 수 있어서, 자동으로 크롤링 예산이 증가한다.

4. 내부 링크 구조 개선

✗ 잘못된 것. 신규 페이지를 홈페이지 어딘가에만 숨겨두고, 내부 링크를 거의 하지 않는다.

✓ 올바른 것. 신규 중요 페이지를 네비게이션, 카테고리 페이지, 관련 글 섹션에서 직접 링크한다.

구글 크롤러는 내부 링크를 따라다닌다. 신규 페이지를 중요 페이지에서 직접 링크하면, 구글이 더 빨리 발견하고, 크롤링 우선순위가 높아진다.

5. 불필요한 리다이렉트 체인 제거

✗ 잘못된 것. https://example.com → https://www.example.com → https://www.example.com/ko → https://www.example.com/ko/ 같은 4단계 리다이렉트가 있다.

✓ 올바른 것. 최종 URL까지의 리다이렉트 단계를 최소화한다(최대 1단계).

<?php
// ✗ 잘못된 것: 리다이렉트 체인
header('Location: https://www.example.com');
// (www.example.com은 다시 /ko로 리다이렉트)
// (그리고 /ko는 /ko/로 리다이렉트)

// ✓ 올바른 것: 직접 최종 URL로
header('Location: https://www.example.com/ko/', true, 301);
exit();
?>

리다이렉트 체인이 많으면 구글이 최종 URL을 찾기 위해 여러 번 크롤링해야 하므로, 크롤링 예산을 낭비한다.

 

크롤링 예산 최적화 후 신규 페이지 빠르게 색인시키기

위의 최적화를 모두 완료했다면, Search Console의 'URL 검사' 도구를 사용해서 신규 페이지의 크롤링을 명시적으로 요청하자.

검사 도구에 새 페이지 URL을 입력하면 '이 URL이 Google 색인에 없습니다'라는 메시지가 나온다. 여기서 '색인 생성 요청' 버튼을 클릭하면, 구글이 즉시 우선순위를 높여서 크롤링한다. 중요한 페이지라면 이런 식으로 요청한 뒤 24시간 내에 색인이 생성된다.

한 번 색인되고 나면, 정기적으로 Search Console의 크롤링 통계를 모니터링해서 예산이 충분하게 유지되는지 확인하자. 만약 'Crawl requests per day'가 계속 떨어진다면, 또 다른 중복 콘텐츠나 저품질 페이지가 생겼을 가능성이 높다.

 

핵심 요약

구글 크롤링 예산은 당신의 사이트가 얼마나 자주, 얼마나 많은 페이지를 크롤링받을 수 있는지를 결정한다. 신규 페이지가 색인되지 않는다면, 그 예산이 중복 콘텐츠나 저품질 페이지에 낭비되고 있을 가능성이 높다. Canonical 태그, robots.txt, 서버 응답 속도, 내부 링크 구조, 리다이렉트 체인 등을 하나씩 최적화하면, 구글 크롤러가 신규 페이지에 더 많은 예산을 할당하게 된다. 작은 기술적 개선이 모여서 검색 노출 속도를 몇 배 빠르게 만든다는 점을 잊지 말자. 이 글의 5가지 최적화 전략을 순서대로 적용하고 Search Console을 모니터링하면, 신규 페이지가 1주일 내에 색인될 가능성이 대폭 높아질 것이다.