웹사이트를 만들고 구글 Search Console에 등록했는데, 자꾸만 '크롤링할 수 없음' 또는 '크롤링 오류'라는 메시지가 뜬다. 이게 뭔지, 왜 생기는지 모르면서 그냥 넘어가는 개발자들이 많다. 하지만 크롤링 불가 상태가 지속되면 검색 결과에 사이트가 절대 노출되지 않는다. 이번엔 구글봇이 내 사이트를 크롤링하지 못하는 정확한 원인 5가지와 각각의 해결법을 실무 기반으로 정리해 소개하겠다.
구글 Search Console에서 '크롤링 불가'는 구글봇이 당신의 웹페이지에 접근하려 했지만, HTTP 요청이 실패했다는 뜻이다. 검색 결과에 노출되려면 구글봇이 먼저 페이지를 읽고 분석해야 하는데, 이 첫 번째 단계에서 막혀버린 것이다. Search Console의 '크롤링 통계' 섹션에 들어가면 이 상태를 확인할 수 있다. 상태 코드별로 원인이 다르므로, 각각의 문제를 알아야 한다.
가장 흔한 원인이다. robots.txt 파일에서 구글봇 접근을 명시적으로 차단했거나, 파일 자체에 접근 권한 오류가 있을 때다.
User-agent: *
Disallow: /
이 설정은 모든 봇(구글봇 포함)을 차단해버린다. 웹마스터 도구에서 'robots.txt 테스터'로 확인하면 '차단됨'이라고 뜬다.
User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /
Sitemap: https://yoursite.com/sitemap.xml
특정 디렉토리만 차단하고 나머지는 허용한다. /admin이나 /private 같은 민감한 경로만 차단하고, 공개 콘텐츠는 Allow로 허용하거나 아예 명시하지 않으면 된다(명시 안 하면 기본적으로 허용).
확인 방법: Search Console → 설정 → robots.txt 테스터 → Googlebot 선택 후 크롤링할 URL 입력 → '크롤링 가능'이 뜨는지 확인.
robots.txt는 허용하지만, 웹 서버 설정(.htaccess, Nginx 설정, 서버 방화벽)에서 구글봇의 IP나 User-Agent를 명시적으로 차단한 경우다. 특히 보안을 강화하려다 실수로 크롤러까지 막아버리는 일이 빈번하다.
if ($http_user_agent ~* "googlebot") {
return 403;
}
이 설정은 구글봇의 모든 요청에 403 Forbidden을 보낸다. Search Console에서 크롤링 오류로 표시된다.
if ($http_user_agent ~* "badbot|scraper") {
return 403;
}
# Googlebot은 허용 (명시하지 않으면 기본 허용)
악성 봇만 차단하고, Googlebot은 아예 제외하거나 명시적으로 허용한다. 정말 필요한 경우만 특정 봇을 차단하되, 주요 검색 엔진(구글, 네이버, 다음)은 절대 차단하지 말자.
확인 방법: 서버 로그를 확인해 Googlebot IP에서 오는 요청의 상태 코드를 본다. 403이 뜨면 위 설정을 확인해야 한다.
사이트가 서버 점검 중이거나, 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 레코드를 다시 설정해야 한다.
사이트가 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번 이상이면 문제다.
사이트가 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에 로그인 → URL 검사 도구 → 크롤링할 URL 입력 → '색인 생성 요청' 클릭. 구글봇이 24시간 이내에 다시 방문해 페이지를 크롤링한다. 몇 시간 뒤 '크롤링 통계'를 확인하면 '성공' 상태로 바뀌어 있을 것이다.
구글봇 크롤링 불가는 검색 색인에 절대적인 영향을 미친다. 작은 서버 설정 오류 하나가 수개월간 사이트를 검색 결과에서 숨겨버릴 수 있다는 뜻이다. 이 글에서 다룬 5가지 원인별 해결법을 순서대로 체크하면, 대부분의 크롤링 문제는 즉시 해결된다. robots.txt부터 시작해 SSL 인증서까지 하나씩 확인하고, 문제를 찾아 수정한 뒤 Search Console에서 재크롤링을 요청하는 습관을 들이자. 이 작은 신경 쓴다는 게 SEO 성과에 몇 배의 차이를 만든다.