Google은 CDN 파일을 크롤링하지 않습니다


11

Google 웹 마스터 도구가 내 웹 사이트에서 차단 된 많은 리소스를보고하는 것으로 나타났습니다. 현재 모든 "차단 된 리소스"는 Cloudfront CDN에서 제공하는 .css, .js 및 이미지 (.jpg, .png)입니다.

Google에서이 파일을 크롤링하지 않는 이유를 파악하고 "리소스 차단"상태를보고하는 데 많은 시간을 보냈습니다.

현재 나는 cdn1.example.com, cdn2.example.com과 같은 여러 호스트 이름에서이 파일들을 제공합니다.…

cdn1, cdn2 및 기타는 CNAME의 클라우드 프론트 배포 이름입니다.

테스트 : 클라우드 프론트 배포 (CNAME 없음)를 직접 사용하려고했지만 문제가 지속됩니다.

현재 내 robots.txt는 다음과 같습니다.

# Google AdSense
User-agent: Mediapartners-Google
Disallow:

#Google images
User-agent: Googlebot-Image
Disallow: /

User-agent: *
Disallow: /homepage
Disallow: /index.php*
Disallow: /uncategorized*
Disallow: /tag/*
Disallow: *feed
Disallow: */page/*
Disallow: *author*
Disallow: *archive*
Disallow: */category*
Disallow: *tag=*
Disallow: /test*
Allow: /

그리고 하나의 예제 페이지에서 차단 된 파일의 예 :

  • cdn1.example.com/wp-content/plugins/wp-forecast/wp-forecast-default.css

  • cdn9.example.com/wp-content/plugins/bwp-minify/min/?f=wp-content/themes/magazine/css/font-awesome.min.css,wp-content/themes/magazine/css/responsive .css

  • cdn5.example.com/wp-content/themes/magazine/images/nobg.png

  • cdn6.example.com/wp-content/plugins/floating-social-bar/images/fsb-sprite.png

  • cdn5.example.com/wp-content/uploads/2013/11/Design-Hotel-3-80x80.jpg

  • cdn5.example.com/wp-content/uploads/2013/11/Marta-Hotel-7-270x225.jpg

나는 robots.txt의 모든 것을 허용하려고 노력했지만 항상 같은 결과를 얻습니다.

또한 Amazon의 CloudFront 설정을주의 깊게 살펴보고 관련이없는 항목은 없습니다 ( "뷰어 액세스 제한 (서명 된 URL 또는 서명 된 쿠키 사용)"옵션을 사용하지 않았으며 사용하지 않았습니다).

지금 나는 이것에 대해 많은 시간을 보냈고 더 이상 아이디어가 없습니다.

누군가 Google Cloud가 Amazon CloudFront에서 호스팅되는 파일을 크롤링하지 못하도록 차단하는 이유를 생각할 수 있습니까?


이러한 "차단 된 리소스"의 HTTP 응답 헤더를 조사 했습니까? GWT는 어떤 정확한 오류를보고합니까? robots.txt에 의해 차단 된 경우이를보고해야합니다.
MrWhite

robots.txt 파일에 대한 간단한 설명 ... URL은 기본적으로 접두사가 일치하므로 *URL 끝에 "접두사"가 없어도됩니다. /test*와 동일합니다 /test.
MrWhite

안녕하세요, Googlebot이 무엇을 얻고 있는지 모르기 때문에 헤더를 검사 할 수 없습니다. "Googlebot이이 페이지에 대한 모든 리소스를 얻을 수 없습니다. 여기에 목록이 있습니다."라는 메시지가 표시되고 "Reason": "Blocked"라는 모든 CDN 호스트 파일 (js, css 및 이미지) 목록이 표시됩니다.
tonelot

"가져 오기 및 렌더링"을 요청하기 때문에 렌더링에 스타일과 이미지가 부족하다는 것도 알 수 있습니다.
tonelot

또한 robots.txt 구문에 대한 참고에 감사드립니다.
tonelot

답변:


7

따라서 해결책은 Amazon Cloudfront도 내를 평가 robots.txt하고 어떻게 든 Google과 다른 구문 규칙을 사용 하는 것 같습니다 .

내 작업 버전은 robots.txt다음과 같습니다.

User-agent: Googlebot-Image
Disallow: /
User-agent: *
Disallow: /homepage
Disallow: /uncategorized
Disallow: /page
Disallow: /category
Disallow: /author
Disallow: /feed
Disallow: /tags
Disallow: /test

이것이 이전과 정확히 동일한 기능을 수행하지 않는다는 매우 중요한 메모입니다. 사실, 나는 모든 빈 줄, 와일드 카드 및 "허용"지시문을 꺼 냈습니다. 최종 결과가 같지 않다는 것을 의미하지만 ... 나는 충분히 가깝다고 생각합니다. 예를 들어 쿼리 문자열로 전달 될 때 태그 페이지를 제외하지 않습니다.

세 가지 중요한 참고 사항 :

  1. 이것을 사용하여 테스트하는 경우 robots.txt각 반복마다 클라우드 프론트 배포에서 무효화하는 것을 잊지 마십시오 . 마지막 버전이 제공되고 있는지 확인하는 것만으로는 충분하지 않습니다.

  2. robot.txt아마존 클라우드 프론트가 이해 하는 구문 의 정의를 찾을 수 없었 습니다. 따라서 시행 착오였습니다.

  3. 결과를 테스트하려면 Google 웹 마스터의 "가져 오기 및 렌더링"도구와 모바일 용 테스터 ( https://www.google.com/webmasters/tools/mobile-friendly/ )를 사용하십시오.

cloudfront가 내 유효성을 검사하고 평가하는 이유를 이해하지 못합니다 robots.txt. 이 파일은 나와 사이트에 오는 크롤러와의 "거래"입니다. 아마존은 중간에 사업이 없습니다. 내 엉망 robots.txt은 그냥 멍청한 짓 이야

클라우드 프론트가 내 robots.txt구문을 추측 할 수 있다는 생각은 결코 없었습니다 .


2

버킷에 robots.txt를 만듭니다.

클라우드 프론트 배포를위한 다른 출처를 만듭니다.

버킷 우선 순위를 웹 사이트보다 높게 설정하십시오.

Cloudfront에서 사이트의 robots.txt를 무효화하십시오.

위의 작업을 수행 한 후 Google은 사이트를 크롤링 할 때 robots.txt 사이트를 읽고 cdn의 링크를 따라갈 때 다른 robots.txt를 보게됩니다.


1

Google은 기본 사이트의 루트에서 robots.txt를 사용하여 외부 리소스가 색인 생성되는 것을 차단하지 않습니다. CDN 또는 기타 도메인을 사용하는 경우 CDN 또는 기타 도메인은 외부 도메인으로 분류되므로 콘텐츠를 차단하는 유일한 방법은 CDN 자체에서 제공하는 파일에서 헤더 응답을 사용하거나 CDN 또는 하위 도메인에서 robots.txt를 사용하는 것입니다 .

사용 :

#Google images
User-agent: Googlebot-Image
Disallow: /

로컬 이미지 만 차단해야하는 경우 CDN에서도 동일하게 수행해야합니다.

헤더 응답 문제 일 가능성이 있으므로 CDN의 파일 중 하나에서 'CURL'을 수행해야합니다. 다음과 같이 보일 것입니다 :

HTTP/1.0 200 OK
Cache-Control: max-age=86400, public
Date: Thu, 10 May 2012 07:43:51 GMT
ETag: b784a8d162cd0b45fcb6d8933e8640b457392b46
Last-Modified: Tue, 08 May 2012 16:46:33 GMT
X-Powered-By: Express
Age: 7
Content-Length: 0
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: V_da8LHRj269JyqkEO143FLpm8kS7xRh4Wa5acB6xa0Qz3rW3P7-Uw==,iFg6qa2KnhUTQ_xRjuhgUIhj8ubAiBrCs6TXJ_L66YJR583xXWAy-Q==
Via: 1.0 d2625240b33e8b85b3cbea9bb40abb10.cloudfront.net (CloudFront)
Connection: close

주의해야 할 사항은 다음과 같습니다.

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
X-Robots-Tag: googlebot: noindex

안녕, 답변 주셔서 감사합니다. 그러나 내 문제는 이미지의 색인이 생성되는 것을 방지하는 방법이 아닙니다. 혼란을 피하기 위해 robots.txt에서 가져 왔으며 결과는 동일합니다. Googlebot은 클라우드 프론트에서 호스팅하는 파일로 인해 차단되었다고 계속 불평하며 이유를 모르겠습니다. 더 이상의 아이디어?
yoru의

당신은 이해하지 못합니다, 나는 당신이 그것을 막기를 원하지 않는다는 것을 알고 있습니다 ... 그래서 왜 헤더 응답이 X- 로봇 태그를 수행하지 않도록하기 위해 맨 아래에 check the robots.txt on your CloudFront distribution말했습니다. CDN에서 인덱싱되는 이미지를 차단하는 유일한 방법은 x-robots-tag와 CDN 자체의 robots.txt입니다.
Simon Hayter

1

문제를 발견했습니다. CloudFront는 robots.txt를 읽고 컨텐츠를 제공하지 못하지만 로봇의 동작과는 어떻게 다른지 분석합니다.

예를 들어 robots.txt의 다음 내용 :

Disallow: */wp-contents/ Allow: */wp-contents/themes/

Googlebot이 가져 오면 색인을 생성합니다. CloudFront에서 읽을 때 'Allow'지시문을 고려하지 않으며 내부에 아무것도 제공하지 않습니다 */wp-contents/themes/.

간단한 답변 : CloudFront 배포에서 robots.txt를 확인하십시오. 문제 일 수 있습니다. 수정하고 올바른 버전으로 업데이트하면 작동합니다!


Cloudfront는 robots.txt를 "읽거나"내용의 "고려"또는 "예방"을하지 않습니다. 무엇을 기억 당신이 객체를 가져올 때 CloudFront를에서 얻을 것은 당신에게 누군가가 자신의 가장자리가 이전 캐시 된 경우, 얻을 것 다른 에지 위치에서 봉사 이상 하나 당신이 한 것보다 일에 대해 아무 것도 알 수 없다. 또한 "표준"로봇 제외가 제대로 표준화되지 않았기 때문에 선행 와일드 카드는 예상치 못한 동작을위한 레시피 일 것입니다.
Michael-sqlbot 2016 년

"CloudFront는 robots.txt를 읽습니다"-CloudFront 자체에서 호스팅되는 robots.txt 파일입니까? URL이 질문에 명시된 것과 비슷한 경우 "리딩 와일드 카드"도 필요하지 않은 것 같습니다.
MrWhite

안녕. 확실히 cloudfront는 내 robots.txt를 읽고 있습니다. 또한 Google과 동일한 구문을 허용하지 않습니다. 나는 robots.txt를 꺼내는 것을 이미 테스트했지만 Cloudfront에서 요청하지 않고 무효화하지 않았기 때문에 결과가 없습니다. 내가 최신 버전을 제공 받고 있었기 때문에 필요하지 않은 것으로 가정했습니다. 테스트 할 때마다 변경 요청이 완료되기까지 시간이 오래 걸리기 때문에 테스트가 오래 걸립니다. 작동하는 버전으로 몇 시간 후에 다시 올 것입니다. 나는 왜 이런 종류의 "스마트 니스"가 필요한지 모르겠다. 그러나 그것이 있고 그렇게해서는 안된다고 생각한다. miguel
tonelot

내 아파치에있는 동일한 robots.txt는 클라우드 프론트와 동일합니다. 나는 그것을 경험적으로 결정했습니다.
snagnever
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.