Почему важно удалять редиректы и ошибки 404 из индекса
Редиректы и страницы с ошибками 404 негативно влияют на SEO и юзабилити сайта. Поисковые системы могут тратить ресурсы на обход устаревших URL, что снижает эффективность индексации и ухудшает позиции сайта. Кроме того, наличие большого количества невалидных страниц в индексе может привести к снижению доверия со стороны поисковиков.
Протокол IndexNow позволяет быстро уведомлять поисковые системы об изменениях на сайте — добавлении, обновлении или удалении URL. Это особенно полезно для оперативного удаления из индекса страниц с редиректами и ошибками 404.
В этой статье мы разберём, как автоматизировать процесс обнаружения таких страниц в WordPress и отправки соответствующих запросов через IndexNow для их удаления из индекса.
Обнаружение редиректов и 404 ошибок в WordPress
Использование логов сервера и плагинов
Самый надёжный способ найти 404 ошибки и редиректы — анализ логов веб-сервера (Apache, Nginx). Однако не у всех есть доступ к логам, поэтому рассмотрим варианты на уровне WordPress.
Для отслеживания 404 ошибок можно использовать популярные плагины, например, Redirection или 404 to 301. Они фиксируют URL, на которые пользователи или боты попадают с ошибкой, и позволяют анализировать их прямо из админки.
Редиректы можно отследить с помощью плагинов, которые управляют редиректами, таких как Redirection или Safe Redirect Manager. В них обычно есть возможность экспорта списка URL с редиректами.
Программное определение 404 и редиректов
Если хочется автоматизировать процесс, можно написать функцию, которая будет проверять статус ответа для URL, собранных из карты сайта или базы данных. Ниже пример функции, которая возвращает HTTP статус кода для URL:
function indexnow_su_get_http_status($url) {
$headers = get_headers($url, 1);
if ($headers === false) return false;
$status_line = $headers[0];
if (preg_match('#HTTP/\d+\.\d+\s+(\d+)#', $status_line, $matches)) {
return intval($matches[1]);
}
return false;
}Используя эту функцию, можно написать скрипт, который переберёт URLs и определит, какие из них возвращают 301, 302 или 404.
Автоматическая отправка URL на удаление через IndexNow
Принцип работы IndexNow для удаления URL
IndexNow позволяет отправлять поисковым системам списки URL с указанием, были ли они добавлены/обновлены или удалены. Для удаления URL нужно отправить их с параметром, указывающим на удаление.
В случае WordPress можно создавать регулярные задания, которые будут сканировать базу на наличие 404 и редиректов, формировать список таких URL и отправлять их в IndexNow.
Пример кода для отправки запроса удаления URL через IndexNow
Представим функцию, которая отправляет список URL на удаление:
function indexnow_su_submit_urls_for_deletion($urls) {
$key = 'ваш_ключ_IndexNow'; // Получите у поисковой системы
$host = home_url();
$endpoint = 'https://api.indexnow.org/indexnow';
$data = [
'host' => parse_url($host, PHP_URL_HOST),
'key' => $key,
'keyLocation' => home_url('indexnow-key.txt'),
'urlList' => $urls
];
$response = wp_remote_post($endpoint, [
'body' => json_encode($data),
'headers' => ['Content-Type' => 'application/json'],
'timeout' => 10
]);
if (is_wp_error($response)) {
return false;
}
$code = wp_remote_retrieve_response_code($response);
return $code === 200;
}Эту функцию можно использовать в связке с ранее описанным скриптом, чтобы автоматически удалять из индекса неактуальные URL.
Пример полной автоматизации удаления устаревших URL
Алгоритм работы
- Собираем список всех URL сайта, например, из карты сайта.
- Проверяем HTTP статус каждого URL.
- Формируем массив URL, которые возвращают 404 или редиректы.
- Отправляем этот массив в IndexNow для удаления из индекса.
Код примера планировщика задач на WordPress
function indexnow_su_cron_check_and_delete_urls() {
$sitemap_urls = indexnow_su_get_sitemap_urls(); // Функция получения URL из sitemap
$urls_to_delete = [];
foreach ($sitemap_urls as $url) {
$status = indexnow_su_get_http_status($url);
if ($status === 404 || ($status >= 300 && $status < 400)) {
$urls_to_delete[] = $url;
}
}
if (!empty($urls_to_delete)) {
indexnow_su_submit_urls_for_deletion($urls_to_delete);
}
}
// Запускаем задачу раз в сутки
if (!wp_next_scheduled('indexnow_su_daily_url_cleanup')) {
wp_schedule_event(time(), 'daily', 'indexnow_su_daily_url_cleanup');
}
add_action('indexnow_su_daily_url_cleanup', 'indexnow_su_cron_check_and_delete_urls');Функция indexnow_su_get_sitemap_urls() должна быть реализована отдельно, например, парсить sitemap.xml и возвращать массив URL.
Рекомендации по плагинам и настройкам
Для пользователей, не желающих писать код самостоятельно, рекомендую обратить внимание на плагин IndexNow Integration (если есть актуальные аналоги), который часто имеет встроенные функции по управлению отправкой URL на удаление.
Также стоит регулярно проверять наличие 404 и редиректов с помощью плагинов Redirection или 404 to 301, чтобы иметь под рукой актуальный список проблемных URL.
Не забудьте правильно настроить cron задачи WordPress, чтобы автоматизация работала стабильно и без сбоев.
Заключение по технической реализации
Удаление из индекса устаревших URL — важный шаг для поддержания качества сайта и его SEO. Протокол IndexNow упрощает и ускоряет этот процесс, позволяя сразу уведомлять поисковые системы.
Используя описанные методы и примеры кода, вы сможете настроить автоматическую систему мониторинга и удаления из индекса URL с редиректами и ошибками 404 на вашем WordPress-сайте.