Почему do_robots() разрешает доступ к /wp-admin/admin-ajax.php по умолчанию?

15 мар. 2022 г., 20:36:18
Просмотры: 16K
Голосов: 7

Это происходит даже при чистой установке WordPress. Достаточно взглянуть на функцию do_robots(), которая выводит следующее:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://knowingart.com/wp-sitemap.xml

Отправка роботов в "wp-admin" (по умолчанию) не имеет смысла:

  1. Зачем вообще отправлять случайных роботов в мою админку? Админка предназначена только для меня. Роботы/краулеры не должны ничего делать в моей админ-директории.
  2. Зачем организовывать DOS-атаку на самого себя, отправляя роботов к админ-скрипту?
  3. Если бы я был разработчиком бота, я мог бы (ошибочно) интерпретировать это "allow" как отмену "disallow", потому что allow идет после disallow для той же директории. Почему robots.txt противоречит сам себе?
  4. Этот странный (по умолчанию) robots.txt ломает DuckDuckGo. Например, в топе поиска моя директория wp-admin?! Похоже, DuckDuckGo прочитал мой robots.txt, зашел в wp-admin, потому что robots.txt разрешил это, хотя это неправильная директория. Разработчики DuckDuckGo запутались в этом странном robots.txt? Хотя более вероятно, что DDG просканировал мой блог до появления контента и просто еще не обновил результаты.

Зачем WordPress посылает поисковых роботов в админ-директорию, где нет контента?! Это не имеет никакого смысла, поэтому я пытаюсь разобраться. Можно предположить, что автор этого кода do_robots() не понимает назначения robots.txt.

6
Комментарии

https://core.trac.wordpress.org/ticket/18465 и https://core.trac.wordpress.org/ticket/33156 дают некоторое представление

birgire birgire
16 мар. 2022 г. 00:02:03

голосую за вопрос, чтобы его оценка стала нулевой, но в следующий раз вам, вероятно, стоит сначала выпить воды, чтобы убедиться, что вы достаточно расслаблены, и ваш вопрос не будет звучать как жалоба ;).

Mark Kaplun Mark Kaplun
16 мар. 2022 г. 05:33:00

@MarkKaplun Спасибо, я отношусь к своей работе серьезно. С тех пор как я начал изучать этот вопрос, похоже, что Google частично ответственен за добавление новой строки "sitemap:", потому что, я думаю, они разработали новый wp-sitemap.xml, что, на мой взгляд, довольно важно. Этот новый код карты сайта впечатляет (хотя и немного глючит), я даже не подозревал о его существовании. Что касается моего состояния, я действительно принимаю лекарства из-за небольшой проблемы со здоровьем, да, я был раздражен и позже смягчил тон. Однако, как системному администратору хостинга WordPress и веб-разработчику, мне важно заботиться о конфигурации WordPress, SEO, картах сайта и т.д.

Jay Brunet Jay Brunet
16 мар. 2022 г. 21:45:52

@birgire Я думаю, что последний тикет - это лучший ответ. Он показывает, что это решение было принято без особых размышлений, и другие люди тоже сомневались в его мудрости (не только я). Это изменение с admin-ajax было поспешной реакцией на рассылку Google Webmaster Tools, которая произошла по ошибке из-за тем, ссылающихся на админ-файлы. На мой взгляд, robots.txt должен быть ответственностью системного администратора. Может, я могу "тронуть robots.txt", но не сломает ли это wp-sitemap.xml? LOL

Jay Brunet Jay Brunet
16 мар. 2022 г. 22:15:09

@PJBrunet Различные плагины могут редактировать этот файл (на самом деле это не файл, он генерируется автоматически при каждом запросе к URL). Хороший плагин не изменит ссылку на карту сайта. Не могу рекомендовать конкретный плагин, так как сам пишу свой код для модификации, когда это необходимо, и не знаю, какой плагин был бы хорошим.

Mark Kaplun Mark Kaplun
17 мар. 2022 г. 05:19:12

Google Search Console выдает ошибку индексации для wp-admin/admin-ajax.php, и владелец сайта хочет исправить эту ошибку. Исправить ее невозможно, кроме как заблокировав этот URL.

AlanP AlanP
21 сент. 2022 г. 20:04:14
Показать остальные 1 комментариев
Все ответы на вопрос 3
5

Во-первых: ознакомьтесь с robots.txt, если вы этого еще не сделали. Еще одним хорошим источником информации является эта статья от Yoast.

Пример, который вы привели:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://knowingart.com/wp-sitemap.xml

...говорит всем пользовательским агентам (то есть всем краулерам), что им не разрешено сканировать что-либо в вашей директории wp-admin, за исключением /wp-admin/admin-ajax.php, который необходим WordPress для корректной работы AJAX.

Это не приглашение для роботов посетить вашу директорию /wp-admin/; это указание, что они там нежелательны (за исключением требования для AJAX).

Что касается вашего вопроса №4, боюсь, у меня нет на него ответа.

15 мар. 2022 г. 22:35:29
Комментарии

@PJBrunet admin-ajax.php очень часто используется для публичных AJAX-запросов на фронтенде веб-сайта. Если запросы к этому файлу от ботов запрещены, то при сканировании вашего сайта поисковым ботом эти запросы не будут работать, и бот потенциально увидит сломанную версию страницы.

Jacob Peattie Jacob Peattie
16 мар. 2022 г. 00:38:12

robots.txt не имеет отношения к доступу WordPress к самому себе. Этот файл предназначен для инструкций поисковым роботам, сообщая им, куда они могут (и, что важнее) не могут заходить на сайте.

Pat J Pat J
16 мар. 2022 г. 00:55:01

@JacobPeattie Я понимаю точку зрения Джейкоба, Google действительно применяет специальные методы для рендеринга страницы и анализа интерфейса, что было правдой ещё со времён Мэтта Каттса. Однако роль robots.txt не в том, чтобы угождать именно Googlebot. Если это действительно проблема, пусть разработчик темы её исправит или обратится в Google. Я понимаю, что SEO для Google очень важно для многих, но это всего лишь один робот среди многих — и, честно говоря, мне всё равно, если чья-то тема требует admin-ajax.php для корректного отображения. Проблемы SEO, специфичные для темы (темы, которые не деградируют корректно), не должны проникать в robots.txt.

Jay Brunet Jay Brunet
16 мар. 2022 г. 22:51:03

Хотя я поддержал ваш ответ, здесь есть проблемы. Во-первых, моё беспокойство по поводу порядка allow/disallow — это реальная проблема https://core.trac.wordpress.org/ticket/33156#comment:18 Независимо от спецификации robots.txt, лучше быть конкретным и понятным, потому что каждый робот будет интерпретировать robots.txt по-своему, независимо от спецификации.

Jay Brunet Jay Brunet
16 мар. 2022 г. 23:09:57

Что касается проблемы с AJAX, в связи с тем, что темы корректно отображаются для Googlebot или из-за сбоя в Инструментах для веб-мастеров, ни одна из этих проблем не относится к robots.txt. AJAX-страницам не требуется AJAX для отображения в поисковой системе. "Ленивая загрузка" контента не должна ломать Googlebot. Разработчики AJAX могут и должны загружать контент-заполнители, другими словами, AJAX-секции с контентом могут и должны корректно работать при сбоях. Плохо закодированные темы не должны загрязнять robots.txt

Jay Brunet Jay Brunet
16 мар. 2022 г. 23:14:15
3

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

Почему у вас есть страницы, проиндексированные поисковой системой? WordPress использует заголовки типа "не индексировать" для всех административных страниц, так что, скорее всего, у вас есть плохо написанный код, который мешает отправке этого заголовка. (Это предполагает, что нет бага в Bing, который является поисковой системой, стоящей за DDG).

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

16 мар. 2022 г. 05:30:45
Комментарии

Я согласен, что "ничего не должно блокироваться", и на самом деле WordPress вообще не должен автоматически генерировать robots.txt. Ответ таков: WordPress допустил ошибку. Исторически цель robots.txt — давать рекомендации краулерам. Однако я слышу, как многие говорят о robots.txt в контексте тем, "фронтенда" и т.д. Даже если бы была проблема с тем, что Google присылает уведомления по электронной почте через Webmaster Tools, это не является задачей robots.txt (Googlebot — всего лишь один из множества краулеров). И конечно, если есть проблемы с Googlebot, которые нельзя решить через Google, NginX/Apache и другие инструменты могут с этим справиться.

Jay Brunet Jay Brunet
16 мар. 2022 г. 22:01:27

"Скорее всего, у вас плохо написанный код" Нет, это свежая установка WordPress из latest.tar.gz, с использованием темы от Automattic, загруженной через панель управления. Впрочем, похоже, что DDG уже обновился и исправил ошибку.

Jay Brunet Jay Brunet
16 мар. 2022 г. 22:21:49

@PJBrunet если это свежая установка, я не имею понятия, что могло пойти не так. Конечно, такого быть не должно, но если по какой-то причине у вас есть входящие ссылки на эти URL, поисковые системы, скорее всего, будут делать то, что захотят.

Mark Kaplun Mark Kaplun
17 мар. 2022 г. 05:14:58
1

Вам следует разрешить admin-ajax.php взаимодействовать с поисковыми системами в WordPress. По сути, это запрос, который работает с темами / плагинами и поисковыми системами при обновлении WordPress-сайта.

19 янв. 2024 г. 19:01:16
Комментарии

Хорошо, я понимаю, что это необходимо для работы сайта, но сложно представить, что вы действительно получаете индексируемый контент из admin-ajax.

Rup Rup
22 янв. 2024 г. 12:27:16