구글최적화 – 페이지를 삭제했을때 HTTP STATUS CODE는 404와 410중 어느쪽으로 할까?

 http status code 404 410

사이트를 운영하다보면 웹 페이지를 삭제 하는 경우가 종종있습니다.

이때 삭제된 페이지로 누군가 접속할 경우 페이지가 없기 때문에, 서버에서는 접속자에게 어떠한 메시지를 보내줍니다.

이때 두가지의 케이스가 발생하는데,

1) 현재 페이지를 사이트내,외부의 다른 URL로 옮겨서 현재 페이지를 삭제하는 경우

2) 현재 페이지가 필요 없어서 삭제되는 경우 입니다.

1)의 경우는 리디렉션을 사용하며, 2)의 경우 404 OR 410를 사용하는 것이 일반적입니다.

그렇다면 2)의 경우 어떠한 HTTP 상태 코드를 반환해야 적절한 대응을 했다고 할 수 있을까요?

결론부터 말하자면, Google에서는 어느 코드를 반환하더라도 상관 없습니다.
그리고 크롤링 재방문 속도도 느려지는 경우는 없습니다.

Google의 http status code 404, 410의 처리

Q : 대형 사이트를 운영하고 있으며, 사이트와 무관한 많은 페이지를 영구 삭제했을 경우, 404과 410의 코드중 어느 쪽으로 돌려야 할까요?

A : 차이는 있지만, 실질적으로는 동일하게 취급하므로 어느것도 상관 없다. 
     독립몰의 경우 어느쪽도 OK, 입점몰이 많이 있다면 404쪽으로 처리해 주는것이 효율적일것 같습니다.

410 (Gone) HTTP 상태 코드의 의미는 “영원히 페이지가 없어졌다”. 
404는 ” NOT FOUND”즉 서버는 요청 URI와 일치하는 것을 아무것도 발견하지 못했다. 즉 “URL주소가없는 경우” 페이지를 찾지 못한다는 의미하는 에러 메시지이다. 

일반적으로 구글은 404보다 410 페이지를 약간만 빠르게 인덱스에서 제거한다. 사이트 측에서 영구삭제라는 시그널을 보내기 때문이다.

그러나 404과 410은 재방문 크롤링 속도에는 영향을 주지 않는다.

구글은 페이지가 완전히 삭제 되었다고 하더라도 여전히 페이지가 존재하지 않는 여부를 확인하기 위하여 계속 수시로 체크한다.

특히 해당 페이지로 연결되는 외부의 링크를 발견 할 경우 더욱 그렇습니다.

실제로는 404와 410 사이에 정말로 어느 정도의 차이가 있을까?  410쪽을 사용하는것이 확실히 적절하다고 확신 할 수 있는 곳에 410을 사용하는 것은 좋은 일이지만, Google 검색의 관점에서 보면 어느 쪽을 반환하던지 크게 상관은 없다고 기억해 두면 될것 같습니다.

HTTP 상태 코드 정의를 다시 요약

• 404 – Page Not Found (페이지를 찾을 수 없었다)
• 410 – Gone (삭제)

404 페이지를 찾을 수 없었다고 했을 뿐이지, 사이트 관리자가 페이지를 의도적으로 삭제 한 것인지 임시로 페이지를 막아놓은 것인지에 대한 정확한 내용을 알 수 없습니다.

단지 누군가(구글 또는 유저) 방문했을 그 때 우연히 뭔가로 인해 표시되지 않았던 것일지도 모릅니다.

이해 반해 410은 사이트측에서 의도적으로 완전히 삭제 했다는 의미를 갖습니다.  극단적으로 말하면 “영원 소멸시켰다”를 의미합니다.

하지만, 위에서도 언급한바와 같이 Google에서 해석하는 두 상태 코드의 역할을 다소 구분하고 있는 눈치이지만, 눈에 보여지는 차이는 나타나지는 않습니다.

즉 404도 410도 최종적으로 취급되는 부분에 있어서 실질적인 차이는 없습니다.

410은 설정을 필요로 하고,  404 불필요

410은 없어진 URL에 대한 요청에 대해 서버가 410을 반환하도록 웹마스터측에서 설정해두어야 합니다.
(한편, 페이지가 없어진 경우 서버는 일반적으로 404을 반환하게 되므로 당신은 특별히 뭔가를 설정 할 필요가 없습니다.)

410도 Googlebot은 다시 방문

404를 반환한 URL에도 지금도 존재하고 있는지를 확인하기 위하여 Googlebot는 그 페이지를 다시 방문합니다 (일반적으로 URL보다는 재방문 간격은 훨씬 길다).

이것은 또한 410도 마찬가지입니다. 정의에서보면 ‘삭제’되었지만, 구글은 410의 URL을 다시 방문 할 수 있습니다.

정리

404과 410에 대한 Google의 구글의 일반적인 처리 방법에 대하여 알아보았습니다.

일반적으로 서버에서 반환하는 이러한 에러 메시지는 검색엔진최적화에서 볼때는 완전히 다른 관점에서 이야기 되기 때문에 좀더 다양한 사용법에 대하여도 익숙해져 가야 할것 같습니다.

 

참고 : 구글에서 정리해둔 http status code 
https://support.google.com/webmasters/answer/40132?hl=ko

HTTP 상태 코드

사용자가 브라우저의 페이지에 액세스하거나 Googlebot이 페이지를 크롤링하는 경우와 같이 서버에 사이트 페이지에 대한 요청이 이루어지면 서버는 요청에 대한 응답으로 HTTP 상태 코드를 반환합니다.

이 상태 코드는 요청 상태의 정보를 제공하고 사이트 및 요청한 페이지에 대한 정보까지 Googlebot에 제공합니다.

일반적인 상태 코드는 다음과 같습니다.

  • 200 – 서버가 페이지를 표시했습니다.
  • 404 – 요청한 페이지가 없습니다.
  • 503 – 서버를 일시적으로 사용할 수 없습니다.

HTTP 상태 코드의 전체 목록은 다음과 같습니다. HTTP 상태 코드에 대한 자세한 내용은 W3C 페이지에서도 확인할 수 있습니다.

1xx(조건부 응답)
조건부 응답을 나타내고 요청자에게 계속 진행할 것을 요구하는 상태 코드입니다.

코드 설명
100(계속) 요청자는 요청을 계속해야 합니다. 서버는 이 코드를 제공하여 요청의 첫 번째 부분을 받았으며 나머지를 기다리고 있음을 나타냅니다.
101(프로토콜 전환) 요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중입니다.

2xx(성공)

서버가 요청을 성공적으로 처리했음을 의미합니다.

코드 설명
200(성공) 서버가 요청을 성공적으로 처리했습니다. 이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰입니다. robots.txt 파일에 대해 이 상태가 표시되면 Googlebot이 이 파일을 성공적으로 검색했다는 뜻입니다.
201(작성됨) 성공적으로 요청되었으며 서버가 새 리소스를 작성했습니다.
202(허용됨) 서버가 요청을 접수했지만 아직 처리하지 않았습니다.
203(신뢰할 수 없는 정보) 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있습니다.
204(콘텐츠 없음) 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않습니다.
205(콘텐츠 재설정) 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않습니다. 204 응답과 달리 이 응답은 요청자가 문서 보기를 재설정할 것을 요구합니다(예: 새 입력을 위한 양식 비우기).
206(일부 콘텐츠) 서버가 GET 요청의 일부를 성공적으로 처리했습니다.

3xx(리디렉션 완료)
요청을 완료하려면 추가 조치가 필요합니다. 이 상태 코드는 일반적으로 리디렉션에 사용됩니다. 요청당 5개 미만의 리디렉션을 사용하는 것이 좋습니다. Search Console을 사용하면 Googlebot이 리디렉션된 페이지를 크롤링하는 데 문제가 있는지 확인할 수 있습니다. 크롤링에 있는 크롤링 오류 페이지에는 Googlebot이 리디렉션 오류 때문에 크롤링하지 못한 URL 목록이 표시됩니다.

코드 설명
300(여러 선택항목) 서버가 요청에 따라 여러 조치를 선택할 수 있습니다. 서버가 요청자(사용자 에이전트)에 따라 수행할 작업을 선택하거나, 요청자가 선택할 수 있는 작업 목록을 제공합니다.
301(영구 이동) 요청한 페이지를 새 위치로 영구적으로 이동했습니다. GET 또는 HEAD 요청에 대한 응답으로 이 응답을 표시하면 요청자가 자동으로 새 위치로 전달됩니다. 이 코드는 페이지 또는 사이트가 새 위치로 영구적으로 이동되었음을 Googlebot에 알릴 때 사용해야 합니다.
302(임시 이동) 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 합니다. 이 코드는 GET 또는 HEAD 요청의 경우 자동으로 요청자를 다른 위치로 전달한다는 점에서 301과 비슷하지만, Googlebot이 계속 원래 위치를 크롤링하고 색인을 생성하기 때문에 Googlebot에 페이지나 사이트가 이동했음을 알릴 때 이 코드를 사용할 수 없습니다.
303(기타 위치 보기) 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시합니다. HEAD 요청 이외의 모든 요청을 다른 위치로 자동으로 전달합니다.
304(수정되지 않음)

마지막 요청 이후 요청한 페이지는 수정되지 않았습니다. 서버가 이 응답을 표시하면 페이지의 콘텐츠를 반환하지 않습니다.

요청자가 마지막으로 페이지를 요청한 후 페이지가 변경되지 않았으면 이 응답(If-Modified-Since HTTP 헤더라고 함)을 표시하도록 서버를 구성해야 합니다. 이렇게 하면 서버에서 페이지가 마지막으로 크롤링된 이후 변경되지 않았다는 것을 Googlebot에 알려주기 때문에 대역폭과 오버헤드가 절약됩니다.

305(프록시 사용) 요청자는 프록시를 사용하여 요청한 페이지만 액세스할 수 있습니다. 서버가 이 응답을 반환하면 요청자가 사용할 프록시를 가리키는 것이기도 합니다.
307(임시 리디렉션) 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 합니다. 이 코드는 GET 또는 HEAD 요청의 경우 자동으로 요청자를 다른 위치로 전달한다는 점에서 301과 비슷하지만, Googlebot이 계속 원래 위치를 크롤링하고 색인을 생성하기 때문에 Googlebot에 페이지나 사이트가 이동했음을 알릴 때 이 코드를 사용할 수 없습니다.

4xx(요청 오류)
이 상태 코드는 요청에 오류가 발생하여 서버가 이 요청을 처리하지 못할 가능성이 높음을 나타냅니다.

코드 설명
400(잘못된 요청) 서버가 요청의 구문을 인식하지 못했습니다.
401(권한 없음) 이 요청은 인증이 필요합니다. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있습니다.
403(금지됨) 서버가 요청을 거부하고 있습니다. 사이트의 유효한 페이지를 크롤링하려 할 때 Googlebot이 이러한 상태 코드를 수신했다는 것이 표시되는 경우(Google Search Console의 상태 아래 크롤링 오류에서 확인), 서버 또는 호스트가 Googlebot의 액세스를 차단하고 있을 가능성이 높습니다.
404(찾을 수 없음)

서버가 요청한 페이지를 찾을 수 없습니다. 예를 들어 서버에 존재하지 않는 페이지에 대한 요청이 있을 경우 서버는 이 코드를 제공합니다.

사이트에 robots.txt 파일이 없는 상태에서 Google Search Console에 있는 차단된 URL 페이지에 이 상태가 나타나면 이는 올바른 상태입니다. 하지만 robots.txt 파일이 있으며 이 상태가 나타나는 경우라면, robots.txt 파일의 이름이 잘못되었거나 파일이 잘못된 위치에 있을 수 있습니다. 파일은 도메인의 최상위 수준에 있어야 하고 이름은 robots.txt여야 합니다.

Googlebot이 크롤링하려는 URL에 이 상태가 나타나면 Googlebot이 잘못된 다른 페이지 링크(이전 링크 또는 철자가 잘못된 링크)를 추적했을 가능성이 높습니다.

405(허용되지 않는 방법) 요청에 지정된 방법을 사용할 수 없습니다.
406(허용되지 않음) 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없습니다.
407(프록시 인증 필요) 이 상태 코드는 401(권한 없음)과 비슷하지만 요청자가 프록시를 사용하여 인증해야 합니다. 서버가 이 응답을 반환하면 요청자가 사용할 프록시를 가리키는 것이기도 합니다.
408(요청 시간초과) 서버가 요청을 기다리는 동안 시간이 초과되었습니다.
409(충돌) 서버에서 요청을 수행하는 중에 충돌이 발생했습니다. 서버는 응답할 때 충돌에 대한 정보를 포함해야 합니다. 서버는 PUT 요청과 충돌하는 PUT 요청에 대한 응답으로 이 코드를 요청 간 차이점 목록과 함께 표시해야 합니다.
410(사라짐) 서버는 요청한 리소스가 영구적으로 삭제되었을 때 이 응답을 표시합니다. 404(찾을 수 없음) 코드와 비슷하며 이전에 있었지만 더 이상 존재하지 않는 리소스에 대해 404 대신 사용하기도 합니다. 리소스가 영구적으로 이동된 경우 301을 사용하여 리소스의 새 위치를 지정해야 합니다.
411(길이 필요) 서버는 유효한 콘텐츠 길이 헤더 입력란 없이는 요청을 수락하지 않습니다.
412(사전조건 실패) 서버가 요청자의 요청 시 부과한 사전조건을 만족하지 않습니다.
413(요청 속성이 너무 큼) 요청이 너무 커서 서버가 처리할 수 없습니다.
414(요청 URI가 너무 김) 요청 URI(일반적으로 URL)가 너무 길어 서버가 처리할 수 없습니다.
415(지원되지 않는 미디어 유형) 요청한 페이지에서 지원하지 않는 형식의 요청입니다.
416(처리할 수 없는 요청범위) 요청이 페이지에서 처리할 수 없는 범위에 해당하는 경우 서버는 이 상태 코드를 표시합니다.
417(예상 실패) 서버가 Expect 요청 헤더 입력란의 요구사항을 만족할 수 없습니다.

5xx(서버 오류)
이 상태 코드는 서버가 요청을 처리하려 할 때 내부 오류가 발생했음을 나타냅니다. 이 오류는 주로 요청이 아니라 서버와 관련이 있습니다.

코드 설명
500(내부 서버 오류) 서버에 오류가 발생하여 요청을 수행할 수 없습니다.
501(구현되지 않음) 서버에 요청을 수행할 수 있는 기능이 없습니다. 예를 들어 서버가 요청 메소드를 인식하지 못할 때 이 코드를 표시합니다.
502(불량 게이트웨이) 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받았습니다.
503(서비스를 사용할 수 없음) 서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용할 수 없습니다. 이는 대개 일시적인 상태입니다.
504(게이트웨이 시간초과) 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못했습니다.
505(HTTP 버전이 지원되지 않음) 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않습니다.
 
Summary
Reviewer
RYU
Review Date
Reviewed Item
다양한 스테터스 코드에 대하여 최적화를 할때 의미를 갖고있다는 것에 대하여 알았고, 좀더 다양한 스테터스와 검색엔진최적화에 대해서도 관심을 가져야 할것 같습니다.
Author Rating
5
Please follow and like us:

Social media & sharing icons powered by UltimatelySocial
RSS
Facebook
Facebook
Google+
Google+
http://www.aun-korea.com/%E3%85%82%E3%85%82/">
SHARE
YouTube
YouTube
NaverPost
NaverBlog