На WordPress часто проблема не в том, что страниц мало, а в том, что поисковик тратит обход на мусорные URL: архивы с пустым содержимым, служебные страницы, дубли пагинации, параметры фильтров, старые вложения и ссылки, которые ведут в никуда. Если такие URL уже попали в обход, их лучше не просто закрыть, а сначала понять, откуда они берутся и почему продолжают появляться.
Ниже — рабочий сценарий: как найти слабые ссылки, убрать источник, а затем проверить, что индексация стала чище. Под «слабыми» здесь понимаются URL, которые не дают ценности пользователю и поиску, но создают лишние переходы, дубли или ошибки.
Какие URL обычно мешают индексации
В реальных проектах чаще всего всплывают одни и те же типы адресов. Они не всегда критичны по отдельности, но в сумме размывают структуру сайта и усложняют обход.
- архивы тегов и рубрик с 1–2 записями;
- страницы вложений WordPress, если они доступны как отдельные URL;
- поиск по сайту с индексируемыми результатами;
- страницы пагинации, которые не несут самостоятельной ценности;
- URL с параметрами сортировки, фильтров, UTM и внутренних трекинговых хвостов;
- старые ссылки из меню, виджетов и контента, которые ведут на удалённые страницы;
- служебные архивы автора и даты, если они не нужны как посадочные.
Диагностика: где искать источник слабых ссылок
Начинать лучше не с правки robots.txt, а с поиска источника. Иначе вы закроете симптом, но не уберёте причину. Для диагностики удобно смотреть сайт с трёх сторон: краулер, серверные логи и сам WordPress.
1. Прогоните сайт краулером
Подойдёт любой нормальный краулер: Screaming Frog, Sitebulb или аналог. Важно не название, а список URL с кодами ответа, canonical и количеством внутренних ссылок. Ищите:
- страницы с кодом 200, но без полезного контента;
- URL, которые получают внутренние ссылки, хотя должны быть закрыты;
- дубли с параметрами;
- страницы, где canonical указывает не туда или отсутствует.
2. Посмотрите, что реально ходит по серверу
Если есть доступ к логам, это самый честный источник. В логах видно, какие URL чаще всего запрашивает бот и откуда они берутся. Иногда проблема не в поиске, а в старом меню, которое тянет сотни переходов на несуществующие страницы.
# Пример поиска частых 404 в access.log
# Формат зависит от сервера, это только идея фильтрации
awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -nr | head3. Проверьте WordPress-источники
В админке и коде обычно находятся виновники: меню, виджеты, блоки в шаблоне, хлебные крошки, вывод похожих записей, плагины фильтрации. Если URL появляется в HTML, поисковик его тоже увидит. Поэтому важно найти не только сам адрес, но и место, где он генерируется.
Пошаговое решение: как убрать слабые ссылки без лишнего риска
Ниже порядок, который обычно работает без лишних сюрпризов. Сначала убираем источник, потом — только при необходимости — ставим технические ограничения.
Шаг 1. Удалите ссылки из шаблонов и контента
Если ссылка есть в меню, футере, сайдбаре или в тексте записи, её нужно убрать там, где она создана. Это лучше, чем закрывать URL через noindex, потому что поисковик перестанет находить адрес естественным образом.
Для меню и виджетов достаточно пройтись по админке. Для шаблонов темы — проверить файлы, где выводятся навигация, хлебные крошки и блоки «похожие материалы».
Шаг 2. Отключите индексирование служебных архивов
Если у вас есть архивы авторов, дат или тегов, которые не нужны в поиске, их лучше закрыть на уровне мета-robots или через SEO-плагин. Но не делайте это вслепую: если архив реально используется как посадочная страница, его лучше доработать, а не прятать.
Пример для темы или плагина, который добавляет noindex на архивы автора и даты:
add_action('wp_head', function () {
if (is_author() || is_date()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
}, 1);Это простой вариант, но он не заменяет нормальную настройку SEO-плагина, если он уже управляет robots meta и canonical. Если у вас стоит плагин, который умеет это делать штатно, лучше использовать его интерфейс, а не дублировать логику в коде.
Шаг 3. Уберите вложения как отдельные страницы
WordPress по умолчанию создаёт страницы вложений, и на небольших сайтах это часто лишний слой индексации. Если медиафайл не должен жить отдельной страницей, перенаправляйте attachment URL на сам файл или на родительскую запись.
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_queried_object_id());
if ($parent) {
wp_redirect(get_permalink($parent), 301);
exit;
}
$url = wp_get_attachment_url(get_queried_object_id());
if ($url) {
wp_redirect($url, 301);
exit;
}
}
});Такой подход полезен, если у вас накопились пустые attachment-страницы с тонким контентом. Но если на сайте есть осознанная медиатека с описаниями, не рубите всё подряд.
Шаг 4. Срежьте параметры, которые создают дубли
Параметры сортировки, фильтров и трекинга часто порождают десятки URL с одинаковым содержимым. Если они не нужны для поиска, их нужно либо не генерировать в ссылках, либо отдавать canonical на чистую версию.
Пример: если у вас есть внутренний фильтр, не добавляйте параметры в ссылки без необходимости. Для уже существующих URL можно нормализовать canonical через фильтр WordPress:
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_string($canonical)) {
$canonical = remove_query_arg(array('utm_source', 'utm_medium', 'utm_campaign', 'sort', 'filter'), $canonical);
}
return $canonical;
}, 10, 2);Это не универсальная панацея. Если параметры реально меняют контент страницы, canonical должен отражать вашу SEO-логику, а не просто «очищать всё подряд».
Шаг 5. Настройте редиректы для удалённых страниц
Если страница удалена, не оставляйте её в 404 без плана. Для старых материалов и служебных URL лучше сделать 301 на ближайший релевантный раздел. Для совсем нерелевантных адресов иногда корректнее оставить 410, но это уже зависит от истории URL и ссылочного профиля.
Если редиректов много, удобнее вести их через сервер или через проверенный плагин редиректов, а не размазывать логику по functions.php.
Сравнение подходов: плагин, код или ручная правка
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Ручная правка в админке | Меню, виджеты, ссылки в контенте | Быстро, без кода | Не решает системные дубли |
| SEO-плагин | Архивы, canonical, robots meta | Удобно централизовать правила | Нужно проверить, не конфликтует ли с темой |
| Код в теме или мини-плагине | Точечные редиректы, attachment, кастомные URL | Гибко и прозрачно | Требует тестирования после обновлений |
Если нужен более широкий набор инструментов для чистки сайта и управления дублями, иногда проще опереться на Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=indexnow.su&utm_medium=article&utm_campaign=kak-otlovit-i-udalit-slabye-ssylki-v-wordpress-pered-indeksaciej. Но даже в этом случае логику сайта всё равно нужно проверить руками.
Проверка результата после внедрения
После правок важно не гадать, а проверить факты. Минимальный набор проверок выглядит так:
- краулер больше не находит внутренние ссылки на удалённые или служебные URL;
- страницы вложений отдают 301 или исчезают из обхода;
- параметризованные адреса не появляются в новых внутренних ссылках;
- canonical указывает на чистую версию страницы;
- в Search Console уменьшается число странных URL в отчётах по страницам и обходу.
Для быстрой проверки конкретной страницы удобно смотреть заголовки ответа:
curl -I https://example.com/old-page/В ответе смотрите на код, Location при редиректе и наличие noindex или canonical в HTML. Если URL должен исчезнуть из индекса, но продолжает отдавать 200 и содержит внутренние ссылки, проблема ещё не решена.
Частые ошибки и как их исправить
Закрыли URL в robots.txt, но ссылка осталась в шаблоне
Это частая ошибка. Robots.txt не убирает ссылку из HTML и не мешает поисковику видеть адрес через внутренние переходы. Сначала удалите источник ссылки, потом уже решайте вопрос с обходом.
Поставили noindex на всё подряд
Если закрыть архивы, страницы поиска и вложения без разбора, можно случайно убрать полезные посадочные. Проверяйте, есть ли у страницы самостоятельный трафик, внешние ссылки и смысл для пользователя.
Сделали 301 на нерелевантную страницу
Редирект на главную или на случайную рубрику выглядит как быстрый способ, но часто это плохой сигнал для поисковика и пользователя. Лучше вести на ближайший тематический аналог или оставить 410, если аналога нет.
Дублируете canonical и редиректы в нескольких местах
Когда canonical меняет SEO-плагин, тема и кастомный код одновременно, легко получить конфликт. В итоге одна страница может отдавать один canonical в HTML, а другой — через плагин. Оставьте один источник правды.
Что стоит учесть по безопасности и производительности
Если вы добавляете код в functions.php, лучше вынести его в мини-плагин. Тогда он не исчезнет при смене темы и его проще отключить при отладке. Для редиректов и правил индексации это особенно важно.
Не ставьте тяжёлые проверки на каждый запрос без необходимости. Например, если условие можно ограничить архивами или attachment-страницами, не запускайте лишнюю логику на всём фронтенде. Это мелочь, но на нагруженном сайте она заметна.
Если у вас уже есть SEO-плагин и плагин для редиректов, не дублируйте их задачи в коде. Сначала проверьте, можно ли решить проблему штатной настройкой. Код нужен там, где стандартных опций не хватает или где нужна точечная логика для конкретного URL-случая.
В итоге рабочая схема простая: найти источник слабых ссылок, убрать его в WordPress или шаблоне, затем проверить обход и ответы сервера. Если после этого в индексацию продолжают попадать мусорные URL, проблема почти всегда в одном из трёх мест: шаблон, плагин или старые ссылки в контенте.