В процессе работы с сайтами на WordPress часто возникает необходимость настроить автоматические редиректы с устаревших URL на новые, чтобы сохранить SEO-показатели и не потерять посетителей. В этой статье разберём, как создавать автоматические 301 редиректы в WordPress без использования дополнительных плагинов, используя собственный код и стандартные возможности движка.
Зачем нужны автоматические редиректы в WordPress
Редиректы помогают направлять посетителей и поисковые системы с устаревших или изменённых ссылок на актуальные страницы. Это особенно важно при смене структуры URL, переносе контента или удалении страниц. Автоматизация процесса сокращает время на ручное управление и минимизирует ошибки.
Без правильных редиректов возможны ошибки 404, ухудшающие пользовательский опыт и негативно влияющие на SEO.
Типы редиректов и когда их использовать
Чаще всего используются следующие типы редиректов:
- 301 (Moved Permanently) – постоянный редирект, передающий основной вес страницы. Используется при окончательном изменении URL.
- 302 (Found) – временный редирект, когда страница временно перемещена.
Для SEO важен именно 301 редирект, и именно его мы настроим в коде.
Как настроить автоматические редиректы с помощью functions.php
Самый простой способ — добавить в файл functions.php вашей активной темы код, который будет анализировать текущий URL и делать редирект, если он совпадает с заданным паттерном.
Пример: редирект со старого формата URL на новый
Предположим, раньше структура ссылок была /blog/post-name, а теперь мы хотим перенаправлять на /articles/post-name.
add_action('template_redirect', 'wpupdate_redirect_old_blog_urls');
function wpupdate_redirect_old_blog_urls() {
if (is_404()) {
$request_uri = $_SERVER['REQUEST_URI'];
if (preg_match('#^/blog/(.+)$#', $request_uri, $matches)) {
$new_url = home_url('/articles/' . $matches[1]);
wp_safe_redirect($new_url, 301);
exit();
}
}
}
Здесь мы проверяем, что текущая страница — 404, затем с помощью регулярного выражения определяем, что URL начинается с /blog/, и перенаправляем на соответствующий новый URL.
Создание динамических редиректов для массового переноса
Если нужно настроить много редиректов по разным правилам, можно хранить их в виде массива и обрабатывать в одном месте.
add_action('template_redirect', 'wpupdate_mass_redirects');
function wpupdate_mass_redirects() {
$redirects = [
'/old-page' => '/new-page',
'/product/old-product' => '/shop/new-product',
// Добавьте свои редиректы
];
$request_uri = strtok($_SERVER['REQUEST_URI'], '?'); // Убираем GET параметры
foreach ($redirects as $old => $new) {
if ($request_uri === $old) {
wp_safe_redirect(home_url($new), 301);
exit();
}
}
}
Такой подход удобен, если вы управляете ограниченным числом URL и хотите избежать плагинов.
Обработка редиректов с параметрами и сложными правилами
Иногда нужно перенаправлять URL с параметрами GET или по сложным условиям. Для этого можно использовать функции PHP для парсинга URI.
add_action('template_redirect', 'wpupdate_redirect_with_query');
function wpupdate_redirect_with_query() {
$request_uri = $_SERVER['REQUEST_URI'];
$parsed_url = parse_url($request_uri);
$path = $parsed_url['path'] ?? '';
parse_str($parsed_url['query'] ?? '', $query_params);
if ($path === '/shop' && !empty($query_params['old_id'])) {
$new_id = intval($query_params['old_id']);
$new_url = home_url('/shop/product-' . $new_id);
wp_safe_redirect($new_url, 301);
exit();
}
}
Здесь мы проверяем наличие параметра old_id и формируем новый URL с использованием этого параметра.
Как проверить и отладить редиректы
Чтобы убедиться, что редиректы работают корректно, используйте:
- Расширения браузера, например Redirect Path или HTTP Headers, для просмотра кода ответа.
- Команду curl в терминале:
curl -I https://example.com/old-url— проверит заголовки и статус. - Логи сервера — они помогут найти циклы редиректов или ошибки.
Внимательно тестируйте редиректы на разных URL, чтобы избежать бесконечных циклов и неправильных адресов.
Альтернатива: использование плагина Clearfy Pro для управления редиректами
Если вы предпочитаете графический интерфейс и дополнительные возможности, обратите внимание на Clearfy Pro. Этот плагин позволяет удобно создавать и управлять редиректами, а также оптимизировать сайт и повышать безопасность.
Преимущества Clearfy Pro для редиректов:
- Управление редиректами через админ-панель без кода
- Массовый импорт и экспорт правил
- Автоматическое удаление устаревших и битых ссылок
- Интеграция с SEO-плагинами
Советы по безопасности и производительности
При добавлении редиректов через код соблюдайте следующие рекомендации:
- Используйте
wp_safe_redirect()вместоwp_redirect()для дополнительной безопасности. - Не забывайте делать
exit()после редиректа, чтобы остановить выполнение скрипта. - Минимизируйте количество проверок в
template_redirect, чтобы не снижать скорость загрузки. - Кешируйте результаты, если логика редиректов сложная.
Заключение
Автоматические редиректы без плагинов — отличный способ контролировать перенаправления на сайте WordPress с минимальными затратами ресурсов и без установки дополнительных расширений. Используя приведённые примеры кода, вы сможете настроить нужные редиректы быстро и эффективно. Для более сложных задач рекомендуем рассмотреть специализированные плагины, например, Clearfy Pro, который упростит управление и расширит возможности вашего сайта.