Автоматические редиректы — важный инструмент для управления трафиком на сайте WordPress. Они помогают перенаправлять пользователей с устаревших URL на новые страницы, предотвращают ошибки 404 и улучшают SEO. В этой статье разберём, как реализовать автоматический редирект без использования плагинов, используя собственные функции и хуки WordPress.
Почему стоит использовать редиректы без плагинов
Многие предпочитают устанавливать плагины для редиректов, например, Redirection или Simple 301 Redirects. Однако плагины могут замедлять сайт и создавать конфликты. Контроль редиректов через код даёт больше гибкости и позволяет оптимизировать производительность.
Кроме того, собственный код можно адаптировать под любые условия — редиректы по параметрам, по типу устройства, по времени и т.д.
Рассмотрим практические примеры создания редиректов через файл functions.php или собственный плагин.
Редиректы с помощью хука template_redirect
Хук template_redirect запускается перед загрузкой шаблона страницы. Это идеальное место для проверки URL и выполнения редиректа.
Пример функции для редиректа с конкретного URL на другой:
function wpwebsite_redirect_old_url() {
if (is_page('staraya-stranica')) {
wp_redirect(home_url('/novaya-stranica/'), 301);
exit;
}
}
add_action('template_redirect', 'wpwebsite_redirect_old_url');Здесь мы проверяем, что открывается страница с ярлыком «staraya-stranica» и делаем 301 редирект на «novaya-stranica».
Редирект с проверкой GET-параметров
Иногда нужно перенаправлять пользователей в зависимости от параметров в URL. Например, если в ссылке есть ?ref=old, перенаправим на главную:
function wpwebsite_redirect_by_query_param() {
if (isset($_GET['ref']) && $_GET['ref'] === 'old') {
wp_redirect(home_url('/'), 301);
exit;
}
}
add_action('template_redirect', 'wpwebsite_redirect_by_query_param');Массовые редиректы через массив соответствий
Если нужно сделать много редиректов, лучше хранить их в массиве и проверять текущий URL по ключу.
function wpwebsite_mass_redirects() {
$redirects = [
'/staraya-stranica' => '/novaya-stranica',
'/staryy-post' => '/novyy-post',
'/old-category' => '/new-category',
];
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
if (array_key_exists('/' . $current_path, $redirects)) {
wp_redirect(home_url($redirects['/' . $current_path]), 301);
exit;
}
}
add_action('template_redirect', 'wpwebsite_mass_redirects');Такой подход упрощает добавление новых редиректов и делает код аккуратным.
Особенности работы с редиректами
- Обязательно используйте код 301 для постоянных редиректов — так поисковики правильно обновят индекс.
- Вызов
exit;послеwp_redirectобязателен, чтобы остановить дальнейшую загрузку страницы. - Проверяйте, что редирект не приводит к циклическим переходам, чтобы избежать ошибок.
Редиректы с помощью .htaccess (альтернативный метод)
Если сайт работает на Apache, можно прописывать редиректы в файле .htaccess. Это намного быстрее, так как сервер сразу перенаправляет запрос без загрузки WordPress.
Пример редиректа 301 в .htaccess:
Redirect 301 /staraya-stranica /novaya-stranicaНо этот метод менее гибкий и сложнее динамически менять правила, поэтому для сложных условий лучше использовать PHP.
Полезные плагины для управления редиректами
Если всё-таки решите использовать плагины, обратите внимание на следующие решения:
- Redirection — самый популярный плагин для управления редиректами с удобным интерфейсом и логами.
- Clearfy Pro — плагин для оптимизации сайта, в том числе содержит функции для SEO и редиректов.
Тестирование редиректов и отладка
После добавления редиректов важно проверить их работу. Для этого используйте инструменты:
- curl в терминале:
curl -I https://ваш-сайт.ru/staraya-stranica— в ответе должна быть строкаHTTP/1.1 301 Moved Permanentlyи заголовокLocation. - Онлайн-сервисы проверки редиректов: Redirect Checker, HTTP Status Code Checker и др.
- Логи сервера — там можно увидеть, как обрабатываются запросы.
Если редирект не срабатывает, проверьте порядок добавления функций и нет ли конфликтов с другими плагинами.