wpshab.ru wordpress wpshab.ru

Как исключить старые ссылки из индексации в WordPress: 301, 410 и noindex без лишних дублей

На WordPress старые URL обычно остаются в индексе не из-за одной ошибки, а из-за набора мелких причин: удалили запись, поменяли структуру ссылок, оставили архивы тегов, а потом ещё и поисковик успел сохранить копию страницы. В итоге в отчётах всплывают 404, дубли и «страницы, исключённые по тегу noindex», но без понятной логики, что именно делать с каждым типом адреса.

Если задача не «почистить всё подряд», а аккуратно вывести из индекса именно устаревшие ссылки, нужен разный подход для разных сценариев: где-то нужен 301, где-то 410 Gone, а где-то достаточно закрыть страницу от индексации и не ломать переходы пользователей.

Когда проблема действительно в старых URL

Сначала полезно понять, что именно поисковик считает проблемой. В WordPress это обычно один из трёх вариантов:

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

Диагностика здесь простая, но её часто пропускают. Сначала откройте Google Search Console и посмотрите разделы с ошибками сканирования и индексирования. Затем проверьте сам URL в браузере и через заголовки ответа сервера. Если страница отдаёт 200, хотя контент уже не нужен, это почти всегда причина лишней индексации.

Что смотреть в первую очередь

  • код ответа: 200, 301, 404 или 410;
  • есть ли редирект на релевантную страницу, а не на главную;
  • не создаёт ли тема или плагин дубли через архивы, метки и параметры;
  • не закрыт ли URL только в robots.txt — этого недостаточно для удаления уже известной страницы из индекса.

Как выбрать между 301, 410 и noindex

У каждого варианта своя задача. Ошибка многих сайтов в том, что все старые адреса отправляют на главную страницу. Для поисковика это слабый сигнал: он видит редирект, но не понимает, куда именно делся контент.

СценарийЧто делатьКогда подходитКомпромисс
Страница переехала на новый URL301 на новый адресЕсли есть точная заменаСохраняется часть сигналов, пользователь попадает в нужное место
Контент удалён без замены410 GoneЕсли страница больше не нужнаБыстрее сигнализирует о намеренном удалении
Страница нужна пользователю, но не для поискаnoindex, followАрхивы, служебные страницы, внутренние подборкиСтраница остаётся доступной, но не должна попадать в индекс

Если у страницы есть логичная замена, используйте 301. Если замены нет и контент удалён окончательно, лучше отдать 410. Если страница полезна внутри сайта, но не должна индексироваться, ставьте noindex и не блокируйте её в robots.txt раньше времени.

Пошаговое решение для WordPress

1. Настройте редиректы для переехавших страниц

Для отдельных URL проще всего использовать плагин редиректов или настроить правила на уровне сервера. Если нужен точечный редирект в WordPress, рабочий вариант через template_redirect выглядит так:

add_action('template_redirect', function () {
    if (is_page('old-page-slug')) {
        wp_redirect(home_url('/new-page-slug/'), 301);
        exit;
    }
});

Такой код уместен только для небольшого числа адресов. Если редиректов много, лучше хранить их отдельно — в плагине или в конфигурации сервера. Иначе вы быстро получите неуправляемый список условий в теме.

2. Возвращайте 410 для удалённых материалов

Если запись удалена окончательно и вы не собираетесь её восстанавливать, отдайте 410 Gone. Это честнее, чем вести человека на главную или на случайную категорию.

add_action('template_redirect', function () {
    if (is_singular('post') && get_query_var('name') === 'old-article-slug') {
        status_header(410);
        nocache_headers();
        echo 'Страница удалена';
        exit;
    }
});

На практике такой код лучше использовать не как постоянное решение для одного URL, а как шаблон для обработки списка удалённых адресов. Для массовой работы удобнее держать массив старых слагов и проверять его до вывода шаблона.

3. Закрывайте от индексации служебные страницы

Если речь про архивы тегов, результаты внутреннего поиска, страницы автора или технические подборки, чаще нужен noindex, follow. Важно не путать это с robots.txt: запрет в robots не удаляет URL из индекса, если он уже известен поисковику.

Для WordPress можно добавить мета-тег через wp_head:

add_action('wp_head', function () {
    if (is_tag() || is_search()) {
        echo '<meta name="robots" content="noindex,follow">' . "\n";
    }
});

Если используете SEO-плагин, проверьте, не дублируете ли вы его настройки своим кодом. Два разных источника для robots-мета часто дают непредсказуемый результат.

Как проверить, что решение сработало

После внедрения не ограничивайтесь визуальной проверкой в браузере. Нужен минимум триггеров:

  1. откройте URL и проверьте код ответа через DevTools или curl -I;
  2. посмотрите, исчез ли адрес из отчёта Search Console не сразу, а после повторного обхода;
  3. убедитесь, что редирект ведёт на релевантную страницу, а не на случайный раздел;
  4. проверьте, не остались ли внутренние ссылки на старый адрес в меню, контенте и блоках.

Пример проверки через консоль:

curl -I https://example.com/old-page-slug/

В ответе вы должны увидеть либо HTTP/2 301 с заголовком Location, либо 410 Gone, либо корректный 200 для страницы, которую вы сознательно оставили без индексации. Если вместо этого сервер отдаёт цепочку редиректов, её тоже нужно сокращать.

Частые ошибки и как их исправить

Редирект на главную вместо релевантной страницы

Это самая частая ошибка при чистке старых URL. Для поисковика такой редирект выглядит как попытка «спрятать» удалённый контент. Если точной замены нет, лучше 410, а не редирект на главную.

Закрыли URL в robots.txt и ждёте удаления

Если страница уже в индексе, Disallow не решает задачу. Поисковик может продолжать хранить URL без содержимого. Сначала нужно дать сигнал через noindex, 301 или 410, а уже потом при необходимости ограничивать обход.

Оставили внутренние ссылки на старые адреса

Даже идеальный редирект не отменяет лишнюю нагрузку. Старые URL должны быть убраны из меню, хлебных крошек, блока похожих материалов, XML-карты сайта и ручных вставок в контенте.

Сделали noindex, но забыли про canonical

Если страница похожа на дубль, а canonical указывает на саму себя или на неправильный адрес, поисковик может продолжать считать её отдельной сущностью. Для архивов и служебных страниц canonical должен быть осмысленным, а не оставленным по умолчанию.

Чек-лист перед публикацией изменений

  • для переехавших страниц настроен 301 на точный новый URL;
  • для удалённых материалов возвращается 410;
  • служебные страницы получают noindex, follow;
  • внутренние ссылки обновлены;
  • в robots.txt нет попытки заменить полноценную индексационную логику;
  • в Search Console отправлена проверка URL после изменений.

Что делать, если старых URL слишком много

Если речь не про 5–10 адресов, а про сотни страниц после миграции или чистки контента, ручная правка быстро становится ошибочной. В таком случае лучше вынести правила в отдельный слой: таблицу редиректов, конфигурацию сервера или SEO-плагин с управлением переадресациями. Для массовой чистки дублей и служебных страниц в WordPress иногда удобнее использовать инструменты вроде Clearfy Pro, если вам нужен не только noindex, но и контроль над техническими архивами и мусорными URL; смотреть имеет смысл здесь: Clearfy Pro.

Но даже с плагином логика остаётся той же: сначала определить тип URL, потом выбрать правильный ответ сервера или мета-робот, и только после этого проверять индексацию. Если сделать наоборот, можно случайно закрыть нужные страницы или создать новые дубли вместо старых.

×
Сделай WordPress мощнее!

Скидка -20% на топовые премиум плагины

Выбрать плагин сейчас ⋙