Изменение URL страницы или записи в WordPress без корректной настройки редиректов может привести к потере трафика и ухудшению SEO. В этой статье мы рассмотрим, как автоматически создавать 301 редиректы после изменения URL, чтобы сохранить позиции в поисковых системах и улучшить пользовательский опыт.
Почему важно автоматизировать редиректы после изменения URL
Когда вы меняете постоянную ссылку (permalink) страницы или записи, старый URL больше не работает, и посетители видят ошибку 404. Поисковые системы тоже фиксируют такие ошибки и могут понизить рейтинг сайта.
Ручное создание редиректов для каждой изменённой страницы – трудоёмкий и рискованный процесс, особенно на больших сайтах. Автоматизация позволяет:
- Сохранять SEO-позиции без потери трафика.
- Уменьшить количество ошибок 404 и улучшить пользовательский опыт.
- Облегчить управление сайтом и избежать человеческих ошибок.
Как WordPress обрабатывает изменение URL по умолчанию
Если вы меняете URL записи в админке WordPress, система сама не создаёт редирект с старого адреса на новый. В результате старые ссылки перестают работать.
Без внешних плагинов или кода вы столкнётесь с проблемой битых ссылок. Чтобы это исправить, можно использовать плагины или написать свой код, который будет отслеживать изменения URL и сохранять старые адреса для редиректа.
Использование плагина для автоматических редиректов
Самые популярные плагины для управления редиректами в WordPress:
- Redirection – бесплатный и мощный плагин, который позволяет создавать редиректы вручную и автоматически логировать 404 ошибки.
Ссылка: https://wordpress.org/plugins/redirection/ - Yoast SEO Premium – в платной версии есть функция автоматических редиректов при изменении URL.
- Clearfy Pro – среди множества оптимизаций есть удобные инструменты для управления редиректами, совместимые с другими функциями оптимизации.
Подробнее: Clearfy Pro на WPSHOP
Плагины упростят задачу, но иногда требуется более тонкая настройка или интеграция с собственными решениями.
Пример кода для автоматического создания 301 редиректа при смене URL записи
Ниже приведён пример, как с помощью хука post_updated отслеживать смену URL и сохранять редирект в базу данных. Для хранения редиректов создадим собственную таблицу. В реальном проекте стоит добавить обработку удаления редиректов и проверку безопасности.
function wp_puzzle_create_redirect_on_url_change($post_ID, $post_after, $post_before) {
// Проверяем, что это публикация или страница
if ($post_after->post_status !== 'publish') return;
// Получаем старый и новый URL
$old_url = get_permalink($post_before->ID);
$new_url = get_permalink($post_after->ID);
if ($old_url !== $new_url) {
global $wpdb;
$table_name = $wpdb->prefix . 'wp_puzzle_redirects';
// Проверяем существует ли таблица, если нет - создаём (один раз)
if ($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") !== $table_name) {
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE {$table_name} (
id mediumint(9) NOT NULL AUTO_INCREMENT,
old_url varchar(255) NOT NULL,
new_url varchar(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY old_url (old_url)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
// Вставляем или обновляем редирект
$wpdb->replace(
$table_name,
[
'old_url' => $old_url,
'new_url' => $new_url
],
['%s', '%s']
);
}
}
add_action('post_updated', 'wp_puzzle_create_redirect_on_url_change', 10, 3);
// Обработка редиректа
function wp_puzzle_redirect_old_urls() {
if (is_admin()) return; // В админке не редиректим
global $wpdb;
$table_name = $wpdb->prefix . 'wp_puzzle_redirects';
$current_url = home_url($_SERVER['REQUEST_URI']);
$redirect = $wpdb->get_row($wpdb->prepare("SELECT new_url FROM {$table_name} WHERE old_url = %s", $current_url));
if ($redirect) {
wp_redirect($redirect->new_url, 301);
exit;
}
}
add_action('template_redirect', 'wp_puzzle_redirect_old_urls');
Пояснения к коду
Этот код автоматически создаёт запись о редиректе, когда меняется URL публикации, и затем при заходе на старый URL делает 301 редирект на новый. Учтите, что в реальном проекте стоит добавить дополнительные проверки, например, на длину URL, безопасность, а также интерфейс для управления редиректами.
Советы по управлению редиректами и производительностью
При большом количестве редиректов важно оптимизировать их хранение и обработку, чтобы не замедлять сайт. Некоторые рекомендации:
- Используйте индексированные таблицы в базе данных для быстрых запросов.
- Кэшируйте результаты редиректов, чтобы уменьшить нагрузку на базу.
- Удаляйте устаревшие редиректы, которые уже не нужны.
- Проверяйте, чтобы не было циклических редиректов.
Для автоматизации и удобства управления рассмотрите использование плагинов с расширенным функционалом, например, Clearfy Pro, который включает оптимизации и инструменты для работы с редиректами.
Заключение
Автоматическое создание редиректов после изменения URL – важная задача для поддержки SEO и стабильной работы сайта. Используйте готовые плагины для простых решений или интегрируйте собственный код для гибкости и контроля. В любом случае, настройка редиректов должна стать частью процесса редактирования контента.