В крупных и даже средних WordPress-проектах со временем накапливаются URL, которые перенаправляют на другие страницы с помощью редиректов 301. Такие адреса не должны оставаться в поисковом индексе, поскольку это ухудшает качество индексации и может негативно повлиять на SEO. В этой статье мы подробно разберём, как автоматически выявлять такие URL, удалять их из индекса через протокол IndexNow и при этом поддерживать актуальность индекса.
Почему важно удалять из индекса URL с 301 редиректом
Поисковые системы рекомендуют исключать из индекса URL, которые постоянно перенаправляют на другие страницы, чтобы избежать дублирования и снизить нагрузку на краулеры. Если оставить такие адреса в индексе, они будут показываться в результатах поиска, но при переходе пользователь попадёт на перенаправленную страницу, что ухудшает пользовательский опыт.
IndexNow — современный протокол, который позволяет моментально уведомлять поисковики об изменениях на сайте: добавлении, обновлении или удалении URL. Использование IndexNow для удаления URL с постоянным редиректом значительно ускоряет обновление индекса.
Как автоматически выявлять URL с 301 редиректом в WordPress
Для автоматизации процесса нам нужно регулярно сканировать базу данных или логи сервера, чтобы определить URL, которые сейчас выдают 301 редирект. В WordPress есть несколько подходов:
- Использовать класс
WP_Httpдля программной проверки статуса ответа HTTP для каждого URL. - Парсить таблицу
wp_redirection_logsпри использовании плагина Redirection. - Если настроены редиректы через .htaccess или серверные правила, можно сгенерировать список редиректов и проверять их.
Пример функции для проверки статуса URL с помощью WP_Http:
function indexnow_check_url_redirect_status($url) {
$http = new WP_Http();
$response = $http->head($url);
if (is_wp_error($response)) {
return false;
}
return isset($response['response']['code']) ? $response['response']['code'] : false;
}
Эту функцию можно использовать для сканирования списка URL и выявления тех, что возвращают 301.
Автоматическое уведомление IndexNow об удалении URL с редиректом
После определения URL, которые перенаправляют и должны быть удалены из индекса, нужно отправить уведомление в IndexNow с указанием этих адресов. Для этого реализуем функцию отправки в IndexNow:
function indexnow_send_url_removal($urls, $key) {
$endpoint = 'https://api.indexnow.org/indexnow';
$payload = [
'host' => parse_url(home_url(), PHP_URL_HOST),
'key' => $key,
'keyLocation' => home_url('/indexnow-key.txt'),
'urlList' => $urls,
'action' => 'delete'
];
$args = [
'body' => json_encode($payload),
'headers' => [
'Content-Type' => 'application/json'
]
];
$response = wp_remote_post($endpoint, $args);
return !is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200;
}
Здесь $urls — массив URL для удаления, $key — ваш API-ключ IndexNow.
Пример комплексного решения для WordPress
Ниже пример кода, объединяющего проверку URL и отправку в IndexNow. Для упрощения рассмотрим, что у нас есть массив URL для проверки.
function indexnow_su_process_redirected_urls() {
$indexnow_key = 'ваш_ключ_здесь';
// Пример массива URL для проверки
$urls_to_check = [
home_url('/old-page-1/'),
home_url('/old-page-2/'),
home_url('/outdated-url/')
];
$urls_for_deletion = [];
foreach ($urls_to_check as $url) {
$status = indexnow_check_url_redirect_status($url);
if ($status === 301) {
$urls_for_deletion[] = $url;
}
}
if (!empty($urls_for_deletion)) {
$result = indexnow_send_url_removal($urls_for_deletion, $indexnow_key);
if ($result) {
error_log('IndexNow: успешно отправлены URL для удаления: ' . implode(', ', $urls_for_deletion));
} else {
error_log('IndexNow: ошибка отправки URL для удаления');
}
}
}
Эту функцию можно запускать по Cron или при сохранении/обновлении контента для актуализации индекса.
Практические советы и рекомендации
- Для больших сайтов не проверяйте все URL за один раз — используйте пакетную обработку.
- Храните список URL с редиректами в отдельной таблице или кэше, чтобы не делать лишние HTTP-запросы.
- Используйте существующие плагины, например, Redirection, для удобного управления редиректами и сбора статистики.
- Если у вас магазин на WooCommerce, обязательно проверяйте редиректы товаров и категорий.
- Настройте уведомления об ошибках отправки в IndexNow для быстрого реагирования.
Поддержка решения плагином Clearfy Pro
Плагин Clearfy Pro предоставляет расширенные инструменты оптимизации и может помочь в автоматизации управления редиректами и очистке индекса. В частности, он позволяет интегрировать IndexNow для отправки URL-уведомлений и автоматизировать процессы удаления устаревших или перенаправленных URL.
Выводы
Автоматическое удаление URL с 301 редиректом из индекса — важная задача для поддержания чистоты и актуальности индекса поисковых систем. Использование протокола IndexNow вместе с последовательной проверкой редиректов в WordPress позволит быстро обновлять индекс и улучшить SEO вашего сайта. Приведённые примеры кода и рекомендации помогут реализовать эту задачу даже без глубоких знаний в программировании.