Ситуация типовая: сайт уже работает, карта сайта есть, robots.txt тоже есть, но в индексе появляются служебные URL, а в Search Console всплывают странные предупреждения про запреты и доступность страниц. Чаще всего проблема не в «плохом SEO», а в том, что robots.txt и XML Sitemap настроены без проверки фактического поведения WordPress и плагинов.
Ниже разберём, как понять, что именно ломается, как безопасно закрыть служебные файлы от индексации и как проверить, что после правки поисковики видят только нужное.
Когда проблема действительно в robots.txt и sitemap
Сначала стоит отделить техническую ошибку от обычной задержки индексации. Если в поиске всплывают URL вида /wp-json/, /feed/, /page/2/ или служебные страницы плагинов, это уже повод смотреть правила доступа и карту сайта. Если же в индексе просто остались старые адреса, а в выдаче они постепенно исчезают, вмешательство может и не понадобиться.
Что проверить в первую очередь
- Открывается ли
/robots.txtбез редиректов и 404. - Нет ли в robots.txt запрета на саму XML-карту сайта.
- Не генерирует ли SEO-плагин отдельный sitemap, который конфликтует с картой от WordPress.
- Не закрыты ли случайно важные разделы, например
/wp-content/uploads/, если там лежат изображения, которые должны индексироваться. - Нет ли в Search Console ошибок сканирования из-за блокировки CSS, JS или самой sitemap.
Если robots.txt редактировался вручную, а потом поверх него начал писать SEO-плагин, конфликт почти гарантирован. В WordPress это особенно заметно, когда один плагин добавляет карту сайта, а другой пытается управлять индексацией через свои настройки.
Как должна выглядеть рабочая схема
Задача простая: не мешать поисковику обходить нужные страницы и одновременно не отдавать ему мусорные или служебные URL. Для этого обычно достаточно двух вещей: корректного robots.txt и понятной логики генерации sitemap.
Вариант 1: править robots.txt через WordPress-фильтр
Если нужен предсказуемый результат, лучше не редактировать физический файл на сервере вручную, а формировать его через фильтр robots_txt. Тогда WordPress будет отдавать актуальный вариант, а вы сможете контролировать правила из темы или небольшого mu-plugin.
<?php
add_filter('robots_txt', function ($output, $public) {
$lines = [];
$lines[] = 'User-agent: *';
$lines[] = 'Disallow: /wp-admin/';
$lines[] = 'Allow: /wp-admin/admin-ajax.php';
$lines[] = 'Disallow: /search/';
$lines[] = 'Disallow: /feed/';
$lines[] = 'Sitemap: ' . home_url('/sitemap_index.xml');
return implode("\n", $lines) . "\n";
}, 10, 2);Этот пример подходит только если у вас действительно используется sitemap по адресу /sitemap_index.xml. Если карта сайта генерируется иначе, подставьте реальный URL. Важно не писать в robots.txt то, чего на сайте нет.
Вариант 2: закрыть служебные страницы от индексации через meta robots
Если нужно не блокировать обход, а именно убрать страницу из индекса, robots.txt не всегда лучший инструмент. Для таких случаев правильнее отдавать noindex на уровне шаблона или через SEO-плагин. Это полезно для страниц поиска, архивов с дублями, пагинации в отдельных сценариях и технических экранов.
<?php
add_action('wp_head', function () {
if (is_search() || is_feed()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1);Такой подход не заменяет robots.txt, а дополняет его. Если страница уже попала в индекс, noindex обычно работает надёжнее, чем простой запрет в robots.txt, потому что поисковик видит директиву при обходе страницы.
Диагностика: где именно ломается индексация
Перед правкой полезно понять, что именно отдаёт сайт. Иначе легко закрыть не тот URL или случайно спрятать карту сайта от бота.
Проверка через браузер и curl
Откройте в браузере /robots.txt и /sitemap_index.xml. Если видите 404, редирект на главную или HTML вместо текста/XML, проблема не в SEO, а в маршрутизации, кэше или серверной конфигурации.
curl -I https://example.com/robots.txt
curl -I https://example.com/sitemap_index.xml
curl https://example.com/robots.txtВ ответе на robots.txt должен быть статус 200 OK и корректный текстовый контент. Для sitemap — XML и тоже 200 OK. Если там 403 или 404, поисковик не сможет нормально использовать эти файлы.
Проверка конфликтов с плагинами
Если установлен SEO-плагин, сначала посмотрите его настройки sitemap и robots. Частая ошибка — одновременно включить карту сайта в WordPress и в плагине, а потом пытаться понять, почему в индексе два разных источника URL. Второй типичный конфликт — кэширование robots.txt на уровне CDN или плагина кеша.
| Подход | Плюсы | Минусы |
|---|---|---|
| Редактировать robots.txt вручную | Быстро | Легко потерять изменения после деплоя или правки плагином |
Генерировать через фильтр robots_txt | Предсказуемо, можно версионировать | Нужен небольшой код |
| Использовать SEO-плагин | Удобно для редакторов | Возможны конфликты с темой и другими плагинами |
Пошаговое решение без лишнего риска
- Снимите текущую версию robots.txt и sitemap, чтобы было с чем сравнить.
- Проверьте, не дублируется ли sitemap в WordPress и SEO-плагине.
- Определите, что нужно именно закрыть от индексации, а что только убрать из обхода.
- Добавьте правила через фильтр или настройки плагина, а не в нескольких местах сразу.
- Очистите кэш сайта, CDN и браузера.
- Проверьте ответы сервером через
curlи валидатор в Search Console.
Если у вас много служебных URL, удобнее сначала собрать их список и закрывать точечно. Не стоит бездумно писать в robots.txt всё подряд, особенно если сайт активно использует AJAX, REST API или медиафайлы.
Как проверить, что решение сработало
После внедрения важно не просто увидеть обновлённый файл в браузере, а убедиться, что поисковик получает именно то, что вы задумали.
- Откройте
/robots.txtв режиме инкогнито и убедитесь, что там нет старой версии из кэша. - Проверьте
/sitemap_index.xmlи вложенные карты сайта на статус200. - В Search Console отправьте robots.txt на повторную проверку, если он был изменён существенно.
- Проверьте, что закрытые страницы действительно отдают
noindexили недоступны для обхода, если это было целью. - Посмотрите логи сервера или отчёты сканирования, если бот продолжает ходить на запрещённые URL.
Если после правки в индексе всё ещё видны старые адреса, это не всегда ошибка. Поисковику нужно время, чтобы переобойти страницы и обновить состояние. Но если в Search Console продолжают появляться новые URL, значит правило либо не применяется, либо конфликтует с другим источником.
Частые ошибки и как их исправить
Закрыли sitemap в robots.txt
Это одна из самых неприятных ошибок. Если карта сайта запрещена для обхода, поисковик может не увидеть обновления структуры сайта. Sitemap должен быть доступен, а не спрятан.
Смешали noindex и Disallow без понимания разницы
Disallow запрещает обход, а noindex говорит не включать страницу в индекс. Если страница уже в индексе, одного запрета в robots.txt часто недостаточно. Для удаления из индекса лучше использовать noindex и затем дождаться переобхода.
Оставили старый robots.txt в кэше
Если сайт за CDN или кэш-плагином, обновление файла может не попасть наружу сразу. После правки обязательно очистите кэш на всех уровнях: WordPress, сервер, CDN.
Поставили два источника sitemap одновременно
Когда WordPress и SEO-плагин оба генерируют карту сайта, поисковик может получать разные наборы URL. Оставьте один источник и отключите второй.
Практические советы по безопасности и производительности
robots.txt не должен раскрывать лишнее, но и не должен создавать иллюзию безопасности. Если вы закрыли каталог в robots.txt, это не значит, что файлы внутри недоступны напрямую. Для реально чувствительных данных нужны права доступа на сервере, а не директива для ботов.
С точки зрения производительности полезно не плодить лишние запросы к sitemap. Если карта сайта очень большая, проверьте, не генерируется ли она на лету слишком тяжело. В таком случае лучше использовать кэшируемую генерацию или плагин, который умеет отдавать sitemap без лишней нагрузки.
Если нужен более широкий контроль над дублями, служебными страницами и технической чисткой WordPress, можно посмотреть в сторону Clearfy Pro. Но даже с плагином логику индексации лучше проверять руками: автоматические настройки не отменяют конфликтов с темой, CDN и другими SEO-инструментами.
Если нужна короткая рабочая схема, держите её в таком порядке: сначала проверить фактические ответы robots.txt и sitemap.xml, потом убрать конфликты между плагинами, затем закрыть только те URL, которые действительно не должны индексироваться, и в конце перепроверить всё через Search Console и curl. Это экономит время лучше, чем попытка «починить SEO» одной строкой в robots.txt.