HTTP 상태 코드, 네트워크 및 DNS 오류가 Google 검색에 미치는 영향

이 페이지에서는 다양한 HTTP 상태 코드와 네트워크 오류, DNS 오류가 Google 검색에 어떠한 영향을 미치는지 설명합니다. 그리고 Googlebot이 웹에서 발견한 상위 20개의 상태 코드와 가장 눈에 띈 네트워크 오류 및 DNS 오류에 관해서도 다룹니다. 418 (I'm a teapot) 같은 익숙하지 않은 상태 코드에 관해서는 다루지 않습니다. 이 페이지에 언급된 모든 문제는 Search Console의 페이지 색인 생성 보고서에 나와 있는 관련 오류 또는 경고를 생성합니다.

HTTP 상태 코드

HTTP 상태 코드는 사이트를 호스팅하는 서버가 클라이언트(예: 브라우저 또는 크롤러)의 요청에 응답할 때 생성됩니다. 모든 HTTP 상태 코드는 의미가 각기 다르지만 요청 결과는 주로 동일합니다. 예를 들어 리디렉션을 나타내는 상태 코드가 여러 개 있지만 결과는 동일합니다.

Search Console은 4xx–5xx 범위의 상태 코드와 실패한 리디렉션(3xx)에 관한 오류 메시지를 생성합니다. 서버가 2xx 상태 코드로 응답하면 응답에서 수신된 콘텐츠는 색인 생성 시 고려될 수 있습니다.

다음 표에는 Googlebot에서 가장 많이 발견한 HTTP 상태 코드와 Google에서 각 상태 코드를 처리하는 방식이 설명되어 있습니다.

HTTP 상태 코드

2xx (success)

Google은 색인 생성 시 콘텐츠를 고려합니다. 콘텐츠에 빈 페이지나 오류 메시지 같은 오류가 제시되면 Search Console에 soft 404 오류가 표시됩니다.

200 (success)

Google이 콘텐츠를 색인 생성 파이프라인에 전달합니다. 색인 생성 시스템이 콘텐츠의 색인을 생성할 수도 있지만 보장되지는 않습니다.

201 (created)
202 (accepted)

Googlebot이 제한된 시간 동안 콘텐츠를 기다린 후, 수신한 모든 콘텐츠를 색인 생성 파이프라인에 전달합니다. 시간 초과는 사용자 에이전트에 따라 다릅니다. 예를 들어 Googlebot 스마트폰은 Googlebot 이미지와 시간 초과 기준이 다를 수 있습니다.

204 (no content)

Googlebot이 수신한 콘텐츠가 없다고 색인 생성 파이프라인에 알립니다. Search Console은 사이트의 페이지 색인 생성 보고서soft 404 오류를 표시할 수 있습니다.

3xx (redirection)

Googlebot은 최대 10개의 리디렉션 홉을 따릅니다. 크롤러가 10개 이하의 홉에 콘텐츠를 수신하지 않으면 Search Console은 사이트의 페이지 색인 생성 보고서에 리디렉션 오류를 표시합니다. Googlebot이 따르는 홉 개수는 사용자 에이전트에 따라 다릅니다. 예를 들어 Googlebot 스마트폰에서의 홉 개수는 Googlebot 이미지와 다를 수 있습니다.

robots.txt의 경우 Google은 RFC 1945에 정의된 대로 5개 이상의 리디렉션 홉을 따른 다음 중지하고 이를 robots.txt 파일의 404로 처리합니다.

Googlebot이 리디렉션 URL에서 수신한 모든 콘텐츠가 무시되며 최종 도착 URL의 콘텐츠는 색인 생성 대상으로 고려됩니다.

301 (moved permanently)

Googlebot이 리디렉션을 따르고, 색인 생성 파이프라인은 리디렉션 대상이 표준이어야 한다는 강력한 신호로 리디렉션을 사용합니다.

302 (found)

Googlebot이 리디렉션을 따르고, 색인 생성 파이프라인은 리디렉션 대상이 표준이어야 한다는 약한 신호로 리디렉션을 사용합니다.

303 (see other)
304 (not modified)

Googlebot이 콘텐츠가 마지막으로 크롤링되었을 때와 동일하다고 색인 생성 파이프라인에 알립니다. 색인 생성 파이프라인은 URL의 신호를 다시 계산할 수 있지만 그 외에 상태 코드는 색인 생성에는 아무런 영향을 미치지 않습니다.

307 (temporary redirect) 302와 같습니다.
308 (moved permanently) 301과 같습니다.

4xx (client errors)

Google의 색인 생성 파이프라인은 4xx 상태 코드를 반환하는 URL을 색인 생성 대상으로 고려하지 않습니다. 이미 색인 생성된 URL 중 4xx 상태 코드를 반환하는 URL은 색인에서 삭제됩니다.

Googlebot이 4xx 상태 코드를 반환하는 URL에서 수신한 모든 콘텐츠는 무시됩니다.

400 (bad request)

429를 제외한 모든 4xx 오류는 동일하게 처리됩니다. Googlebot이 콘텐츠가 존재하지 않는다고 색인 생성 파이프라인에 알립니다.

색인 생성 파이프라인은 이전에 색인 생성된 URL을 색인에서 삭제합니다. 새로 발견된 404 페이지는 처리되지 않습니다. 크롤링 빈도가 서서히 감소합니다.

401 (unauthorized)
403 (forbidden)
404 (not found)
410 (gone)
411 (length required)
429 (too many requests)

Googlebot은 429 상태 코드를 서버가 과부하 상태라는 신호로 취급하기 때문에 서버 오류로 간주합니다.

5xx (server errors)

5xx429 서버 오류는 Google 크롤러에 크롤링 속도를 일시적으로 낮추라고 요청합니다. 이미 색인 생성된 URL은 색인에 보존되지만 결국에는 삭제됩니다.

robots.txt 파일이 서버 오류 상태 코드를 30일 넘게 반환하는 경우 Google은 robots.txt의 마지막으로 캐시된 사본을 사용합니다. 사용할 수 없는 경우 Google은 크롤링 제한이 없다고 가정합니다.

Googlebot이 5xx 상태 코드를 반환하는 URL에서 수신한 모든 콘텐츠는 무시됩니다.

500 (internal server error)

Googlebot이 사이트의 크롤링 속도를 낮춥니다. 크롤링 속도 감소는 서버 오류를 반환하는 개별 URL의 수에 비례합니다. Google의 색인 생성 파이프라인은 서버 오류를 지속적으로 반환하는 색인에서 URL을 삭제합니다.

502 (bad gateway)
503 (service unavailable)

오류 soft 404

soft 404 오류는 사용자에게 페이지가 존재하지 않는다고 알리는 페이지200 (success) 상태 코드를 반환하는 URL입니다. 경우에 따라 주요 콘텐츠가 없거나 페이지가 비어 있는 경우도 있습니다.

이러한 페이지는 웹사이트의 웹 서버 또는 콘텐츠 관리 시스템이나 사용자의 브라우저에 의해 다양한 원인으로 생성될 수 있습니다. 예:

  • 서버 측 포함 파일이 누락되었습니다.
  • 데이터베이스 연결이 끊어졌습니다.
  • 내부 검색결과 페이지가 비어 있습니다.
  • 로드 취소되었거나 자바스크립트 파일이 누락되었습니다.

200 (success) 상태 코드를 반환한 다음 그런 다음 오류 메시지를 표시 또는 제안하거나 페이지에 특정 오류가 표시되는 것은 좋은 사용자 환경이 아닙니다. 사용자가 해당 페이지가 실제로 작동 중인 페이지라고 생각하게 되지만 그런 다음 오류 메시지가 표시되게 됩니다. 이러한 페이지는 검색에서 제외됩니다.

Google 알고리즘이 페이지의 콘텐츠를 기반으로 페이지를 실제 오류 페이지로 감지하면 Search Console은 사이트의 페이지 색인 생성 보고서soft 404 오류를 표시합니다.

soft 404 오류 수정

페이지 상태와 원하는 결과에 따라 soft 404 오류를 다음과 같이 여러 방법으로 해결할 수 있습니다.

사용자에게 가장 적합한 솔루션을 파악해 보세요.

페이지와 콘텐츠를 더 이상 사용할 수 없음

페이지를 삭제했지만 사이트에 비슷한 콘텐츠가 있는 대체 페이지가 없다면 페이지에 관한 404 (not found) 또는 410 (gone) 응답 (상태) 코드를 반환합니다. 이러한 상태 코드는 페이지가 존재하지 않으며 콘텐츠의 색인을 생성하면 안 된다고 검색엔진에 알려 줍니다.

서버의 구성 파일에 액세스할 수 있다면 이러한 오류 페이지를 맞춤설정하여 사용자에게 유용하게 만들 수 있습니다. 적절한 맞춤 404 페이지를 사용하면 사용자가 원하는 정보를 찾도록 돕고, 사이트를 더 자세히 탐색하도록 유도하는 유용한 콘텐츠도 제공할 수 있습니다. 다음은 유용한 맞춤 404 페이지를 디자인하기 위한 도움말입니다.

  • 요청한 페이지를 찾을 수 없음을 방문자에게 확실히 알립니다. 친근하고 호감이 가는 표현을 사용하세요.
  • 404 페이지의 디자인(탐색 메뉴 포함)이 사이트의 나머지 부분과 같은지 확인합니다.
  • 사이트 홈페이지 링크뿐 아니라 가장 인기 있는 기사나 게시물의 링크를 추가합니다.
  • 깨진 링크를 신고할 수 있는 경로를 사용자에게 제공합니다.

맞춤 404 페이지는 사용자만을 위해 생성됩니다. 이러한 페이지는 검색 엔진의 관점에서 쓸모없지만 페이지의 색인 생성을 방지하려면 서버가 404 HTTP 상태 코드를 반환하도록 해야 합니다.

페이지나 콘텐츠가 이제 다른 위치에 있음

페이지가 이동되었거나 사이트에 확실한 대체 페이지가 있다면 301 (permanent redirect)을 반환하여 사용자를 리디렉션합니다. 이렇게 하면 사용자의 탐색 환경을 방해하지 않으면서도 검색엔진에 페이지의 새 위치를 알릴 수 있습니다. URL 검사 도구를 사용하여 URL이 실제로 정확한 코드를 반환하는지 확인하세요.

페이지와 콘텐츠가 여전히 있음

다른 우수한 페이지가 soft 404 오류로 신고된 경우 Googlebot에서 제대로 로드되지 않았거나, 중요한 리소스가 누락되었거나, 렌더링 중에 심각한 오류 메시지가 표시되었을 수 있습니다. URL 검사 도구를 사용하여 렌더링된 콘텐츠와 반환된 HTTP 코드를 검사합니다. 렌더링된 페이지가 전부 또는 거의 비어 있거나, 콘텐츠에 오류 메시지가 포함되어 있는 경우, 페이지에서 로드할 수 없는 리소스(이미지, 스크립트 등 텍스트가 아닌 요소)를 많이 참조하고 있기 때문일 수 있습니다. 이렇게 되면 페이지가 soft 404로 해석될 수 있습니다. 리소스 로드의 실패 이유는 리소스가 차단되었거나(robots.txt에 의해), 페이지에 너무 많은 리소스가 있거나, 다양한 서버 오류가 발생하거나, 로드 속도가 너무 느리거나, 리소스의 크기가 너무 크기 때문일 수 있습니다.

네트워크 오류 및 DNS 오류

네트워크 오류와 DNS 오류는 Google 검색에 URL이 존재하는 데 즉각적으로 부정적인 영향을 미칩니다. Googlebot은 네트워크 시간 초과, 연결 재설정, DNS 오류를 5xx 서버 오류와 유사하게 처리합니다. 네트워크 오류는 서버가 실행 중인 로드를 처리하지 못할 수 있다는 신호이기 때문에 크롤링 속도가 즉시 저하되기 시작합니다. Googlebot이 사이트를 호스팅하는 서버에 도달할 수 없었으므로 Google도 서버에서 아무런 콘텐츠도 받지 못했습니다. 콘텐츠 부족으로 인해 Google에서 크롤링된 URL의 색인을 생성할 수 없으며, 이미 색인이 생성되었으나 도달할 수 없는 URL은 며칠 내로 Google 색인에서 삭제됩니다. Search Console은 각각의 오류와 관련해 오류 메시지를 생성할 수 있습니다.

네트워크 오류 디버그

이러한 오류는 Google에서 URL 크롤링을 시작하기 전이나 크롤링하는 중에 발생합니다. 서버가 응답하기 전에 오류가 발생할 수 있고 이때 문제의 의미를 나타내는 상태 코드가 없기 때문에 오류를 진단하기가 더 어려울 수 있습니다. 시간 초과 및 연결 재설정 오류를 디버그하려면 다음과 같이 합니다.

  • 방화벽 설정 및 로그를 확인합니다. 설정된 차단 규칙이 지나치게 광범위할 수 있습니다. Googlebot IP 주소가 방화벽 규칙에 의해 차단되지 않는지 확인합니다.
  • 네트워크 트래픽을 확인합니다. tcpdumpWireshark 같은 도구를 사용해 TCP 패킷을 캡처, 분석하고 특정 네트워크 구성요소나 서버 모듈을 가리키는 이상 징후를 찾습니다.
  • 의심스러운 항목을 찾지 못하면 호스팅 업체에 문의합니다.

네트워크 트래픽을 처리하는 서버 구성요소에 오류가 있을 수 있습니다. 예를 들어 과부하된 네트워크 인터페이스가 시간 초과(연결을 설정할 수 없음) 및 연결 재설정(포트가 실수로 닫혀서 RST 패킷이 전송됨)을 초래한 패킷을 삭제할 수 있습니다.

DNS 오류 디버그

DNS 오류는 주로 잘못된 구성으로 인해 발생하지만, Googlebot DNS 쿼리를 차단하는 방화벽 규칙에 의해 발생할 수도 있습니다. DNS 오류를 디버그하려면 다음과 같이 합니다.

  • 방화벽 규칙을 검사합니다. 방화벽 규칙에 의해 차단된 Google IP가 없고 UDPTCP 요청이 모두 허용되는지 확인합니다.
  • DNS 레코드를 확인합니다. A 레코드와 CNAME 레코드가 각각 올바른 IP 주소와 호스트 이름을 가리키는지 다시 확인합니다. 예를 들면 다음과 같습니다.
    dig +nocmd example.com a +noall +answer
    dig +nocmd www.example.com cname +noall +answer
  • 모든 네임서버가 사이트의 올바른 IP 주소를 가리키는지 확인합니다. 예를 들면 다음과 같습니다.
    dig +nocmd example.com ns +noall +answer
    example.com.    86400  IN  NS  a.iana-servers.net.
    example.com.    86400  IN  NS  b.iana-servers.net.
    dig +nocmd @a.iana-servers.net example.com +noall +answer
    example.com.    86400  IN  A  93.184.216.34
    dig +nocmd @b.iana-servers.net example.com +noall +answer
    ...
  • 최근 72시간 이내에 DNS 구성을 변경한 경우 변경사항이 전역 DNS 네트워크에 전파될 때까지 기다려야 할 수도 있습니다. 전파 속도를 높이려면 Google의 공개 DNS 캐시를 플러시하면 됩니다.
  • 자체 DNS 서버를 실행 중인 경우 서버가 정상 상태로 유지되고 과부하되지 않도록 합니다.