Автоматическое удаление слуг с постоянным редиректом и обновление индекса WordPress через IndexNow

В крупных WordPress-проектах часто возникает проблема: после удаления или переноса страниц остаются старые URL (слуги), которые настроены на постоянный редирект (301). Если их не очищать, поисковые системы продолжают индексировать устаревшие адреса, что ухудшает SEO и нагрузку на сервер. В этой статье разберём, как автоматически выявлять такие слуги с 301 редиректом, удалять их из WordPress и оперативно сообщать об этом поисковым системам через протокол IndexNow.

Почему важно удалять слуги с 301 редиректом и обновлять индекс

Постоянный редирект (301) информирует поисковики, что страница окончательно перемещена по новому адресу. Однако если старые URL остаются в базе или sitemap, поисковые системы тратят ресурсы на обход неактуальных ссылок. Это ведёт к падению скорости индексации новых страниц и может негативно сказаться на ранжировании.

Использование IndexNow позволяет максимально быстро уведомлять поисковики о том, что старые URL удалены и их нужно исключить из индекса. Это снижает количество «мертвых» ссылок в выдаче и улучшает SEO.

Как определить слуги с постоянным редиректом в WordPress

Самый простой способ — проверять статус ответа сервера для каждого URL, который ранее использовался на сайте. Для этого можно использовать PHP с cURL или wp_remote_get(). Пример функции для проверки:

function indexnow_su_check_redirect_status($url) {
    $response = wp_remote_head($url);
    if (is_wp_error($response)) {
        return false;
    }
    $status_code = wp_remote_retrieve_response_code($response);
    return $status_code === 301 || $status_code === 308;
}

Эта функция возвращает true, если URL отвечает статусом 301 или 308 (постоянный редирект).

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

Автоматическое удаление и отправка уведомления в IndexNow

Удаление слуг зависит от способа их хранения. Если это записи (посты), достаточно вызвать wp_delete_post(). Для остальных URL, например, записанных как пользовательские ссылки, нужно реализовать удаление вручную.

После удаления URL нужно уведомить поисковики через IndexNow. Для этого отправим POST-запрос с массивом удалённых URL и ключом API.

Пример функции для отправки в IndexNow

function indexnow_su_send_urls_to_indexnow(array $urls) {
    $api_key = 'ВАШ_API_КЛЮЧ';
    $endpoint = 'https://api.indexnow.org/indexnow?url='.urlencode(reset($urls)).'&key='.$api_key.'&keyLocation=https://'.$_SERVER['HTTP_HOST'].'/indexnow-key.txt';

    $body = json_encode(['host' => $_SERVER['HTTP_HOST'], 'key' => $api_key, 'keyLocation' => '/indexnow-key.txt', 'urlList' => $urls]);

    $response = wp_remote_post('https://api.indexnow.org/indexnow', [
        'headers' => ['Content-Type' => 'application/json'],
        'body' => $body,
        'timeout' => 10,
    ]);

    return !is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200;
}

Полный пример автоматизации на Cron

Чтобы регулярно проверять устаревшие URL, удалять их и отправлять уведомления, создадим задачу Cron.

add_action('indexnow_su_cron_cleanup', 'indexnow_su_cleanup_old_redirects');

function indexnow_su_cleanup_old_redirects() {
    $old_urls = get_option('indexnow_su_old_redirect_urls', []);
    $urls_to_delete = [];

    foreach ($old_urls as $key => $url) {
        if (indexnow_su_check_redirect_status($url)) {
            // Здесь логика удаления записи или URL из базы
            // Например, если это пост:
            $post_id = url_to_postid($url);
            if ($post_id) {
                wp_delete_post($post_id, true);
            }
            unset($old_urls[$key]);
            $urls_to_delete[] = $url;
        }
    }

    update_option('indexnow_su_old_redirect_urls', $old_urls);

    if (!empty($urls_to_delete)) {
        indexnow_su_send_urls_to_indexnow($urls_to_delete);
    }
}

if (!wp_next_scheduled('indexnow_su_cron_cleanup')) {
    wp_schedule_event(time(), 'hourly', 'indexnow_su_cron_cleanup');
}

Этот код раз в час проверяет список старых URL, удаляет те, что отвечают 301, и отправляет их в IndexNow для удаления из индекса поисковиков.

Рекомендации по хранению и учёту устаревших URL

Чтобы ваш механизм работал эффективно, придерживайтесь следующих советов:

  • Храните устаревшие URL в отдельной опции или таблице для быстрого доступа без перебора всей базы.
  • Обновляйте список URL сразу при смене слуг или удалении страниц.
  • Используйте транзиенты или кэширование, чтобы не перегружать сервер постоянными запросами.
  • Ведите лог успешных и неудачных попыток отправки в IndexNow для отладки.

Заключение и полезные плагины для автоматизации

Автоматизация удаления слуг с 301 редиректом и оперативное обновление поискового индекса через IndexNow позволит поддерживать сайт чистым и оптимизированным для поисковиков. Для комфортной работы можно использовать плагины, например Clearfy Pro, который поможет контролировать редиректы и чистить неактуальные ссылки, а также использовать WPRemark для расширенного управления URL.

Таким образом, вы получите комплексное решение для поддержки актуальности URL и быстрой индексации сайта WordPress.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
IndexNow отправка URL из WordPress при использовании REST API: практическое руководство
03.02.2026
Как автоматически удалять слуги с постоянным редиректом в WordPress и обновлять индекс с помощью IndexNow
18.05.2026
Как работать с IndexNow в WordPress при использовании разных типов контента
27.01.2026
Как правильно настроить ограничение частоты запросов IndexNow в WordPress
17.03.2026
Как использовать IndexNow для удаления старых URL из WordPress
17.02.2026
×
WPShop
честная партнерка!

Зарабатывай до 3225₽ с каждой продажи

Подключиться к партнерке