Как отключить архивы по датам в WordPress и не сломать SEO

Архивы по датам в WordPress часто живут своей жизнью: страницы /2024/05/, /2024/05/12/ и похожие URL появляются автоматически, даже если вы их не используете как отдельный контентный слой. Проблема не в самих архивах, а в том, что они могут создавать тонкие страницы, дублировать логику рубрик и размывать обход поисковыми роботами. Если на сайте нет редакционного смысла в таких архивах, их обычно проще отключить или закрыть от индексации.

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

Сначала стоит понять, что именно у вас индексируется и зачем. Архивы по датам полезны только в нескольких сценариях: новостной сайт, журнал с хронологической навигацией, проект, где пользователи реально ищут материалы по дням или месяцам. Во всех остальных случаях это часто лишние URL без самостоятельной ценности.

Типичные признаки проблемы:

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

Диагностика: что именно отключать

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

Проверьте адреса и шаблоны

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

Сравните варианты решения

Подход Когда подходит Минус
Закрыть от индексации Если архив нужен пользователям, но не нужен в поиске URL остаётся доступным и продолжает обходиться
Сделать редирект на рубрику или главную Если архив не нужен вообще Нужно аккуратно выбрать целевой URL, чтобы не потерять смысл
Удалить через код и отдавать 404/410 Если архивы точно не должны существовать Нужно проверить, что не ломаются внутренние ссылки и хлебные крошки

Пошаговое решение: отключаем архивы по датам через код

Если задача именно убрать архивы по датам из публичного доступа, самый надёжный путь — отключить их на уровне WordPress. Это лучше, чем просто прятать их мета-тегом noindex. Код можно добавить в дочернюю тему или в небольшой mu-plugin.

Вариант 1: отключить архивы и отдавать 404

Этот вариант подходит, если архивы по датам не нужны вообще. WordPress перестанет строить такие страницы, а посетитель и робот получат корректный ответ об отсутствии страницы.

<?php
/**
 * Plugin Name: Disable Date Archives
 */

add_action('template_redirect', function () {
    if (is_date()) {
        global $wp_query;
        $wp_query->set_404();
        status_header(404);
        nocache_headers();
        include get_query_template('404');
        exit;
    }
});

Этот код не удаляет сами правила перезаписи, но блокирует вывод архивов по дате на фронтенде. Если у вас есть SEO-плагин, проверьте, не добавляет ли он для этих URL отдельные канонические теги или хлебные крошки, которые будут указывать на несуществующие страницы.

Вариант 2: сделать редирект на рубрику или главную

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

<?php
add_action('template_redirect', function () {
    if (!is_date()) {
        return;
    }

    $target = home_url('/news/');
    wp_safe_redirect($target, 301);
    exit;
});

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

Вариант 3: закрыть только от индексации

Если архивы нужны для навигации, но не должны ранжироваться, можно оставить их доступными и добавить noindex,follow. Это компромиссный вариант, но он не решает проблему лишнего обхода полностью. Используйте его только тогда, когда у архивов есть реальная пользовательская ценность.

Если вы используете SEO-плагин, настройка обычно делается в его интерфейсе. Смысл один: не прятать архивы «на глаз», а явно указать поисковым системам, что эти страницы не являются посадочными.

Что проверить после внедрения

После изменений не ограничивайтесь открытием страницы в браузере. Нужно проверить ответ сервера, заголовки и поведение робота. Это особенно важно, если вы меняли шаблон через template_redirect или редирект на уровне PHP.

  • Откройте несколько URL архивов по дате и убедитесь, что они дают 404 или 301 в зависимости от выбранного сценария.
  • Проверьте заголовки ответа через DevTools, curl -I или любой HTTP-клиент.
  • Посмотрите, не осталось ли внутренних ссылок на архивы в меню, хлебных крошках, сайдбаре и футере.
  • Проверьте XML-карту сайта: архивные URL не должны туда попадать, если вы их отключили.
  • Сравните отчёт краулинга до и после: число обходов лишних архивов должно снижаться.

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

curl -I https://example.com/2024/05/

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

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

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

Ошибка: редирект на главную для всех архивов

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

Ошибка: отключили архивы, но оставили ссылки в теме

В этом случае пользователь кликает по несуществующей странице, а робот продолжает ходить по старым URL из внутренних ссылок. После отключения архивов проверьте шаблоны темы, виджеты и меню. Иногда ссылка на архив даты сидит в блоке «Последние записи» или в кастомном хлебном крошке.

Ошибка: сломали архивы автора и рубрики вместе с датами

Если вы используете общий фильтр is_archive(), можно случайно задеть не только даты, но и рубрики, теги, авторов. Для точечной правки используйте именно is_date(). Это важно, если на сайте архивы рубрик нужны для SEO и навигации.

Практические советы по безопасности и производительности

Если вы вносите код вручную, не правьте напрямую functions.php активной темы на боевом сайте. Лучше использовать дочернюю тему или отдельный mu-plugin, чтобы изменения не потерялись после обновления. Для небольших технических правок это надёжнее и проще в сопровождении.

С точки зрения производительности отключение лишних архивов полезно ещё и потому, что уменьшает число бесполезных запросов к шаблонам и снижает шум в логах. Но не ждите от этого магического ускорения: эффект обычно заметен именно в чистоте индекса и в качестве обхода, а не в бенчмарках.

Если вам нужен более широкий набор инструментов для технической чистки WordPress, имеет смысл смотреть в сторону решений, которые помогают управлять дублями, архивами и служебными страницами, например Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае сначала проверьте, что именно вы хотите отключить, а не включайте пакетные настройки вслепую.

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

  • Определили, нужны ли архивы по датам пользователям.
  • Выбрали один сценарий: 404, 301 или noindex.
  • Проверили, что код затрагивает только is_date().
  • Убрали внутренние ссылки на отключённые архивы.
  • Проверили HTTP-статус и отсутствие лишних URL в sitemap.
  • Сверили поведение в браузере и через curl -I.

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

⭐⭐⭐⭐⭐