웹사이트를 만들고 구글 Search Console에 등록했는데, 자꾸만 '크롤링할 수 없음' 또는 '크롤링 오류'라는 메시지가 뜬다. 이게 뭔지, 왜 생기는지 모르면서 그냥 넘어가는 개발자들이 많다. 하지만 크롤링 불가 상태가 지속되면 검색 결과에 사이트가 절대 노출되지 않는다. 이번엔 구글봇이 내 사이트를 크롤링하지 못하는 정확한 원인 5가지와 각각의 해결법을 실무 기반으로 정리해 소개하겠다.

 

구글봇 크롤링 불가 상태란

구글 Search Console에서 '크롤링 불가'는 구글봇이 당신의 웹페이지에 접근하려 했지만, HTTP 요청이 실패했다는 뜻이다. 검색 결과에 노출되려면 구글봇이 먼저 페이지를 읽고 분석해야 하는데, 이 첫 번째 단계에서 막혀버린 것이다. Search Console의 '크롤링 통계' 섹션에 들어가면 이 상태를 확인할 수 있다. 상태 코드별로 원인이 다르므로, 각각의 문제를 알아야 한다.

 

원인 1. robots.txt가 크롤링을 차단했을 때 (403 Forbidden)

가장 흔한 원인이다. robots.txt 파일에서 구글봇 접근을 명시적으로 차단했거나, 파일 자체에 접근 권한 오류가 있을 때다.

 

✗ 잘못된 robots.txt
User-agent: *
Disallow: /

이 설정은 모든 봇(구글봇 포함)을 차단해버린다. 웹마스터 도구에서 'robots.txt 테스터'로 확인하면 '차단됨'이라고 뜬다.

 

✓ 올바른 robots.txt
User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /
Sitemap: https://yoursite.com/sitemap.xml

특정 디렉토리만 차단하고 나머지는 허용한다. /admin이나 /private 같은 민감한 경로만 차단하고, 공개 콘텐츠는 Allow로 허용하거나 아예 명시하지 않으면 된다(명시 안 하면 기본적으로 허용).

확인 방법: Search Console → 설정 → robots.txt 테스터 → Googlebot 선택 후 크롤링할 URL 입력 → '크롤링 가능'이 뜨는지 확인.

 

원인 2. 서버에서 Googlebot을 차단했을 때 (403 Forbidden)

robots.txt는 허용하지만, 웹 서버 설정(.htaccess, Nginx 설정, 서버 방화벽)에서 구글봇의 IP나 User-Agent를 명시적으로 차단한 경우다. 특히 보안을 강화하려다 실수로 크롤러까지 막아버리는 일이 빈번하다.

 

✗ Nginx에서 Googlebot 차단 (잘못된 설정)
if ($http_user_agent ~* "googlebot") {
    return 403;
}

이 설정은 구글봇의 모든 요청에 403 Forbidden을 보낸다. Search Console에서 크롤링 오류로 표시된다.

 

✓ Nginx에서 Googlebot 허용 (올바른 설정)
if ($http_user_agent ~* "badbot|scraper") {
    return 403;
}

# Googlebot은 허용 (명시하지 않으면 기본 허용)

악성 봇만 차단하고, Googlebot은 아예 제외하거나 명시적으로 허용한다. 정말 필요한 경우만 특정 봇을 차단하되, 주요 검색 엔진(구글, 네이버, 다음)은 절대 차단하지 말자.

확인 방법: 서버 로그를 확인해 Googlebot IP에서 오는 요청의 상태 코드를 본다. 403이 뜨면 위 설정을 확인해야 한다.

 

원인 3. 서버가 다운되었거나 DNS가 꺼져있을 때 (503 Service Unavailable, DNS Failure)

사이트가 서버 점검 중이거나, DNS 설정이 잘못되어 도메인 주소 해석이 실패한 경우다. 일시적인 문제일 수도, 오래된 문제일 수도 있다.

 

✗ 점검 중 메시지 없이 서버 내려버린 경우
<!-- 서버 응답 -->
HTTP/1.1 503 Service Unavailable
Retry-After: 3600

구글봇은 이 상태 코드를 보면 '사이트가 일시적으로 다운됨'이라고 판단하고 나중에 다시 시도한다. 하지만 이 상태가 며칠 계속되면 크롤링 불가로 표시된다.

 

✓ 점검 중 명확한 상태 코드 반환
<!-- Nginx에서 점검 중 메시지 표시 -->
server {
    listen 80;
    server_name yoursite.com;
    
    location / {
        return 503;
        add_header Retry-After "3600";
    }
    
    error_page 503 /maintenance.html;
    location = /maintenance.html {
        root /var/www/html;
    }
}

503 상태 코드와 함께 Retry-After 헤더를 명시해 구글봇에게 '며칠 뒤에 다시 와'라는 신호를 보낸다. 사용자에게는 점검 중 페이지를 보여주고, 크롤러에게는 명확한 상태를 알린다.

DNS 확인 방법: 터미널에서 `nslookup yoursite.com` 실행. IP 주소가 올바르게 나오는지 확인. 안 나오면 DNS 레코드를 다시 설정해야 한다.

 

원인 4. HTTP 리다이렉트 체인이 너무 길 때 (302/301 Redirect Loop)

사이트가 http → https로 리다이렉트되거나, 여러 도메인을 거쳐 이동되는데 이 과정이 5번 이상 반복되면 구글봇은 포기한다. 보통 홀수 번 리다이렉트되는 바람에 최종 목적지에 도달하지 못한 경우다.

 

✗ 리다이렉트 체인이 무한 반복
# 첫 번째 서버
server {
    server_name oldsite.com;
    return 301 https://oldsite.com$request_uri;
}

# 두 번째 서버 (잘못된 설정)
server {
    server_name oldsite.com;
    listen 443;
    return 301 http://oldsite.com$request_uri;  # 다시 http로
}

이렇게 설정하면 http → https → http → ... 반복된다. 구글봇은 5번째 리다이렉트에서 포기한다.

 

✓ 리다이렉트를 한 번에 처리
server {
    listen 80;
    server_name oldsite.com www.oldsite.com newsite.com www.newsite.com;
    return 301 https://newsite.com$request_uri;  # 최종 목적지로 직진
}

server {
    listen 443 ssl http2;
    server_name newsite.com www.newsite.com;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    # 실제 사이트 콘텐츠
}

최대 1~2번의 리다이렉트로 최종 목적지에 도달하도록 한다. 도메인 마이그레이션 시에는 반드시 이 방식을 써야 한다.

확인 방법: curl 명령어로 리다이렉트 과정 추적. `curl -L -v https://yoursite.com` 실행해 몇 번 리다이렉트되는지 본다. 5번 이상이면 문제다.

 

원인 5. SSL 인증서 오류 (HTTPS 연결 실패)

사이트가 HTTPS 인증서를 사용 중인데, 인증서가 만료됐거나 도메인과 맞지 않으면 구글봇은 연결할 수 없다. 자체 서명 인증서도 마찬가지다.

 

✗ 인증서가 만료된 상태
$ curl https://yoursite.com
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/libcurl/c/libcurl-errors.html#L60

구글봇이 이 사이트에 접근하려다가 SSL 핸드셰이크 실패로 403 또는 연결 오류를 기록한다.

 

✓ 유효한 인증서 설치
$ curl https://yoursite.com -v
...
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* Server certificate:
*  subject: CN=yoursite.com
*  issuer: C=US, O=Let's Encrypt, CN=R3
*  expire date: 2025-04-15 23:59:59 GMT

Let's Encrypt 같은 신뢰할 수 있는 CA에서 발급한 인증서를 사용하고, 자동 갱신(certbot 같은 도구)을 설정해 만료 전에 미리 갱신하자.

확인 방법: SSL Labs (ssllabs.com)에서 사이트를 검사. 인증서 유효 기간, 프로토콜 버전, 체인 검증 상태를 모두 확인할 수 있다.

 

해결 체크리스트
증상확인 항목해결법
크롤링 불가 (상태 코드 403)robots.txt, .htaccess, Nginx 설정구글봇 차단 규칙 제거 또는 Allow 추가
DNS 오류도메인 DNS 레코드DNS A 레코드 재설정 또는 호스팅 확인
503 또는 연결 실패서버 가동 상태, 네트워크 연결서버 재시작, 방화벽 규칙 점검
리다이렉트 체인 오류리다이렉트 횟수직접 리다이렉트로 1~2회로 단축
HTTPS 연결 오류SSL 인증서 유효 기간, CN(도메인)인증서 갱신 또는 Let's Encrypt 설치

 

크롤링 오류 해결 후 재크롤링 요청하기

위 문제를 해결한 뒤에도 구글 Search Console에 크롤링 불가 상태가 남아있을 수 있다. 이 경우 수동으로 재크롤링을 요청해야 한다.

 

Search Console 재크롤링 요청 방법

Search Console에 로그인 → URL 검사 도구 → 크롤링할 URL 입력 → '색인 생성 요청' 클릭. 구글봇이 24시간 이내에 다시 방문해 페이지를 크롤링한다. 몇 시간 뒤 '크롤링 통계'를 확인하면 '성공' 상태로 바뀌어 있을 것이다.

 

마무리

구글봇 크롤링 불가는 검색 색인에 절대적인 영향을 미친다. 작은 서버 설정 오류 하나가 수개월간 사이트를 검색 결과에서 숨겨버릴 수 있다는 뜻이다. 이 글에서 다룬 5가지 원인별 해결법을 순서대로 체크하면, 대부분의 크롤링 문제는 즉시 해결된다. robots.txt부터 시작해 SSL 인증서까지 하나씩 확인하고, 문제를 찾아 수정한 뒤 Search Console에서 재크롤링을 요청하는 습관을 들이자. 이 작은 신경 쓴다는 게 SEO 성과에 몇 배의 차이를 만든다.