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?

tonelot
источник
Вы изучили заголовки ответа 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синтаксис.

tonelot
источник
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, это может быть проблемой. Сделайте недействительной и обновите ее исправленной версией, и она должна работать!

snagnever
источник
Cloudfront не «читает» файл robots.txt, не «рассматривает» его содержимое и не «запрещает» что-либо. Помните, что то, что вы получаете из облачного фронта, когда выбираете объект, ничего не говорит вам о том, что получит кто-то из другого пограничного местоположения, если его край кэшировал раньше или позже, чем ваш. Кроме того, ведущие символы подстановки, вероятно, являются рецептом для неожиданного поведения, поскольку «стандарт» исключения роботов недостаточно хорошо стандартизирован.
Майкл - sqlbot
«CloudFront читает файл robots.txt» - это файл robots.txt, размещенный на самом CloudFront? «Подстановочный знак» также может показаться ненужным, если URL-адреса совпадают с указанными в вопросе.
MrWhite
Привет. Определенно cloudfront читает мой robots.txt. И также определенно не принимает тот же синтаксис, что и Google. Я уже проверил удаление robots.txt и не увидел никаких результатов, потому что я не запрашивал и аннулировал в cloudfront. Предполагается, что в этом нет необходимости, потому что меня обслуживают по последней версии. Тестирование занимает много времени, так как каждое изменение требует запроса на аннулирование, выполнение которого занимает вечность. я вернусь через несколько часов с рабочей версией. Я не знаю, зачем нужна такая "умность" ... но она есть, и я думаю, что не должна. Мигел
tonelot
Тот же robots.txt, представленный на моем apache, - это тот, который получил облачный фронт. Я определил это опытным путем.
snagnever