Если вы решили изменить структуру URL на сайте WordPress, например, сменить ЧПУ (человекопонятные урлы) или перенести страницы на другую адресную схему, важно сохранить индексацию и SEO-позиции. Неправильное изменение URL может привести к потере трафика, снижению позиций в поисковых системах и проблемам с индексацией. В этой статье рассмотрим, как грамотно менять URL в WordPress, используя правильные редиректы и отправку обновленных ссылок через протокол IndexNow.
Почему важно правильно менять URL в WordPress: риски и задачи
Изменение URL без корректной настройки ведет к ошибкам 404, которые плохо влияют на ранжирование. Поисковые системы теряют связь с вашими страницами, а пользователи получают ошибку, что снижает доверие и удобство.
Основные задачи при смене URL:
- Настроить 301 редиректы со старых адресов на новые;
- Обновить внутренние ссылки в контенте и меню;
- Отправить поисковым системам информацию о смене адресов для быстрой переиндексации.
В WordPress эти задачи можно автоматизировать и упростить с помощью плагинов и собственного кода.
Настройка 301 редиректов для новых URL в WordPress
Лучший способ сохранить SEO — настроить постоянные (301) редиректы. Они сообщают поисковику, что страница окончательно сменила адрес.
Для этого можно использовать плагины, например:
- Redirection — популярный и бесплатный плагин для управления редиректами;
- Rank Math SEO — SEO-плагин с возможностью создания редиректов;
- Yoast SEO Premium — платный плагин с расширенными функциями редиректов.
Пример ручного добавления редиректа в .htaccess для сайта на Apache:
Redirect 301 /staryj-url/ /novyj-url/Или в файле functions.php темы можно добавить редирект на PHP:
function indexnow_redirect_old_to_new() {
if (strpos($_SERVER['REQUEST_URI'], '/staryj-url/') !== false) {
wp_redirect(home_url('/novyj-url/'), 301);
exit;
}
}
add_action('template_redirect', 'indexnow_redirect_old_to_new');Автоматизация редиректов при массовом изменении URL
Если меняется много URL, вручную создавать редиректы неудобно. Можно написать скрипт, который будет автоматически создавать правила на основе старой и новой структуры.
Например, если меняется префикс в URL для записей с /blog/ на /articles/, в functions.php можно добавить:
function indexnow_redirect_blog_to_articles() {
$request_uri = $_SERVER['REQUEST_URI'];
if (strpos($request_uri, '/blog/') === 0) {
$new_url = str_replace('/blog/', '/articles/', $request_uri);
wp_redirect(home_url($new_url), 301);
exit;
}
}
add_action('template_redirect', 'indexnow_redirect_blog_to_articles');Обновление внутренних ссылок и меню после изменения URL
Важно не только настроить редиректы, но и обновить все ссылки внутри сайта, чтобы избежать лишних переходов через редиректы и ускорить работу сайта.
Для обновления ссылок в контенте можно использовать SQL-запросы к базе данных, например:
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://example.com/blog/', 'https://example.com/articles/');Для меню и виджетов ссылки можно редактировать через админку или программно с помощью функции:
function indexnow_update_menu_links($old, $new) {
$menus = wp_get_nav_menus();
foreach ($menus as $menu) {
$items = wp_get_nav_menu_items($menu->term_id);
foreach ($items as $item) {
if (strpos($item->url, $old) !== false) {
$updated_url = str_replace($old, $new, $item->url);
wp_update_nav_menu_item($menu->term_id, $item->ID, ['url' => $updated_url]);
}
}
}
}
// indexnow_update_menu_links('https://example.com/blog/', 'https://example.com/articles/');Отправка новых URL в IndexNow для быстрой переиндексации
После смены URL важно сообщить поисковым системам о новых адресах. Протокол IndexNow позволяет мгновенно уведомить поисковики о добавленных, изменённых или удалённых URL.
Для WordPress есть несколько плагинов, которые поддерживают IndexNow, например:
- IndexNow for WordPress — официальный плагин от Microsoft;
- Rank Math SEO — поддерживает IndexNow;
- Wp IndexNow — лёгкий плагин для отправки URL.
Если хотите реализовать отправку IndexNow самостоятельно, пример функции на PHP:
function indexnow_send_url($url, $key) {
$endpoint = 'https://api.indexnow.org/indexnow?url=' . urlencode($url) . '&key=' . $key . '&keyLocation=' . urlencode(home_url('/indexnow.key'));
$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return ($http_code === 200);
}
// Пример вызова
//$success = indexnow_send_url('https://example.com/articles/novaya-stranica', 'ваш_ключ_indexnow');Интеграция отправки IndexNow с редиректами
Рекомендуется отправлять новые URL сразу после изменения и настройки редиректа. Можно автоматизировать отправку в хуке, который обновляет URL или запускается после массовых изменений.
Пример подключения к хуку сохранения записи:
function indexnow_notify_on_url_change($post_ID, $post_after, $post_before) {
if ($post_after->post_name !== $post_before->post_name) {
$new_url = get_permalink($post_ID);
$key = 'ваш_ключ_indexnow';
indexnow_send_url($new_url, $key);
}
}
add_action('post_updated', 'indexnow_notify_on_url_change', 10, 3);Проверка и отладка изменений URL
После настройки редиректов и отправки URL важно проверить корректность:
- Проверьте, что старые URL делают 301 редирект на новые;
- Убедитесь, что в коде страницы нет ссылок на старые адреса;
- Проверьте доступность новых URL и отсутствие ошибок 404;
- Посмотрите логи сервера и плагинов на предмет ошибок;
- Используйте инструменты вебмастера, чтобы проверить статус индексации.
Для отладки редиректов можно использовать расширения браузера или онлайн-сервисы типа httpstatus.io.
Резюме по безопасности и производительности
Изменение URL — критичная операция для сайта. Рекомендуется делать резервные копии базы данных и файлов перед изменениями. Автоматизируйте задачи, используйте проверенные плагины и тестируйте каждый шаг.
Оптимальная стратегия — сначала настроить редиректы, затем обновить ссылки, и уже после этого отправлять новые URL поисковикам через IndexNow. Это позволит минимизировать потери трафика и ускорить переиндексацию.