Google не сканирует файлы CDN


11

Я заметил, что Google Webmaster Tools сообщает о большом количестве заблокированных ресурсов на моем веб-сайте. Прямо сейчас все "заблокированные ресурсы" - это .css, .js и изображения (.jpg, .png), которые я обслуживаю из Cloudfront CDN.

Я потратил много времени на тестирование и пытался выяснить, почему Google не сканирует эти файлы и сообщает о состоянии «блокирования ресурса».

В настоящее время я обслуживаю эти файлы с нескольких имен хостов, таких как: cdn1.example.com, cdn2.example.com,…

cdn1, cdn2 и другие - это CNAME для имени дистрибутива облачного фронта.

Тест: я пытался использовать дистрибутив Cloudfront (без 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, но у меня всегда один и тот же результат.

Я также внимательно изучал настройки CloudFront в Amazon и не вижу ничего, что могло бы быть связано (я не использую и никогда не использовал опцию: «Ограничить доступ для просмотра (используйте подписанные URL-адреса или подписанные файлы cookie)».

Прямо сейчас я потратил много времени на изучение этого вопроса и у меня больше нет идей.

Может кто-нибудь придумать причину, по которой роботу Googlebot будет запрещено сканировать файлы, размещенные в Amazon CloudFront?


Вы изучили заголовки ответа HTTP этих «заблокированных ресурсов»? Какую именно ошибку сообщает GWT? Если они были заблокированы robots.txt, он должен сообщить об этом.
— MrWhite

Небольшой комментарий о вашем файле robots.txt ... URL-адреса имеют префикс по умолчанию, поэтому *в конце URL-адреса никогда не нужно указывать «префикс». /test*так же, как /test.
— MrWhite

Привет, я не могу изучить заголовки, потому что я не знаю, что получает Googlebot. Я просто получаю сообщение: «Googlebot не может получить все ресурсы для этой страницы. Вот список:», а затем список всех размещенных на CDN файлов (js, css и изображения) с «Reason»: «Blocked».
— tonlot

Поскольку я прошу «извлечь и отобразить», я также вижу, что при рендеринге отсутствуют стили и изображения…
— tonelot

Также спасибо за примечание к синтаксису robots.txt.
— tonlot

Ответы:


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

Очень важно отметить, что это не выполняет те же функции, что и раньше. На самом деле я убрал все пустые строки, подстановочные знаки и директивы "allow". Это означает, что конечный результат не совпадает ... но я думаю, что это достаточно близко для меня. Например, он не исключает страницы тегов при передаче в строке запроса ...

Три важных замечания:

  1. Если вы тестируете с этим, не забудьте аннулировать robots.txtв распределении облачного фронта для каждой итерации. Просто проверить, что вам обслуживают последнюю версию, недостаточно.

  2. Я нигде не смог найти определение robot.txtсинтаксиса, понятного Amazon Cloudfront. Итак, это было методом проб и ошибок.

  3. Чтобы проверить результаты, воспользуйтесь инструментом «Получить и отобразить» веб-мастера Google и их дружественного для мобильных устройств тестера ( https://www.google.com/webmasters/tools/mobile-friendly/ ).

Я не понимаю, почему Cloudfront проверяет и оценивает мои robots.txt. Этот файл "сделка" со мной и сканерами, которые приходят на мой сайт. У Amazon нет бизнеса в середине. Возиться с моим robots.txtпросто глупо.

Мне никогда не приходило в голову, что облачный фронт может быть вторым, угадывая мой robots.txtсинтаксис.


2

Создайте robots.txt в ведре.

Создайте еще один источник для вашего облачного фронта.

Установите приоритет вашего ведра выше, чем ваш сайт.

Сделайте недействительной robots.txt вашего сайта в Cloudfront.

После выполнения вышеупомянутого, Google будет читать сайты robots.txt при сканировании вашего сайта и будет видеть другой файл robots.txt при переходе по ссылкам с вашего cdn.


1

Google не блокирует индексацию внешних ресурсов с помощью файла robots.txt в корне основного сайта. Используя поддомен, cdn или другой классифицируется как внешний домен, поэтому единственный способ заблокировать контент - использовать ответ заголовка для файла, обслуживаемого самой CDN, или использовать robots.txt в cdn или поддомене. ,

С помощью:

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

Следует блокировать только локальные образы, вам нужно будет сделать то же самое в CDN.

Скорее всего, это проблема ответа заголовка, и вы должны сделать 'CURL' для одного из файлов в CDN. Это должно выглядеть примерно так:

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, и результаты остались прежними. Робот Google продолжает жаловаться, что он заблокирован для файлов, которые я размещаю на облачном фронте, и я не знаю почему. Есть еще идеи? Спасибо за внимание, Мигель
— тонлот

Вы не поняли, я знаю, что вы не хотите, чтобы он блокировался ... поэтому я и сказал в нижней части, чтобы убедиться, что ваш ответ заголовка НЕ ​​выполняет X-robots-tag, также вы говорите, что check the robots.txt on your CloudFront distributionя тоже это сказал! Единственный способ заблокировать изображения, индексируемые в CDN, - это x-robots-tag и robots.txt в самой CDN, что уже упоминалось.
— Саймон Хейтер

1

Обнаружена проблема: CloudFront читает файл robots.txt и предотвращает обслуживание контента, но, по-моему, он анализирует, насколько он отличается от того, что должны делать роботы.

Например, следующий контент на robots.txt:

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

Когда робот Google получает его сам, он индексирует его; Когда CloudFront читает его, он не учитывает директиву «Разрешить» и запрещает обслуживать что-либо внутри */wp-contents/themes/.

Краткий ответ: проверьте robots.txt в вашем дистрибутиве CloudFront, это может быть проблемой. Сделайте недействительной и обновите ее исправленной версией, и она должна работать!


Cloudfront не «читает» файл robots.txt, не «рассматривает» его содержимое и не «запрещает» что-либо. Помните, что то, что вы получаете из облачного фронта, когда выбираете объект, ничего не говорит вам о том, что получит кто-то из другого пограничного местоположения, если его край кэшировал раньше или позже, чем ваш. Кроме того, ведущие символы подстановки, вероятно, являются рецептом для неожиданного поведения, поскольку «стандарт» исключения роботов недостаточно хорошо стандартизирован.
— Майкл - sqlbot

«CloudFront читает файл robots.txt» - это файл robots.txt, размещенный на самом CloudFront? «Подстановочный знак» также может показаться ненужным, если URL-адреса совпадают с указанными в вопросе.
— MrWhite

Привет. Определенно cloudfront читает мой robots.txt. И также определенно не принимает тот же синтаксис, что и Google. Я уже проверил удаление robots.txt и не увидел никаких результатов, потому что я не запрашивал и аннулировал в cloudfront. Предполагается, что в этом нет необходимости, потому что меня обслуживают по последней версии. Тестирование занимает много времени, так как каждое изменение требует запроса на аннулирование, выполнение которого занимает вечность. я вернусь через несколько часов с рабочей версией. Я не знаю, зачем нужна такая "умность" ... но она есть, и я думаю, что не должна. Мигел
— tonelot

Тот же robots.txt, представленный на моем apache, - это тот, который получил облачный фронт. Я определил это опытным путем.
— snagnever
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.