Функция redirect_canonical()
в WordPress предназначена для автоматического перенаправления пользователей и поисковых систем на правильный URL-адрес, тем самым улучшая SEO вашего сайта.
WordPress рассматривает www.example.com
и example.com
как два разных URL. Функция redirect_canonical()
предотвращает проблемы с дублированием контента, перенаправляя все запросы на один из этих адресов. Она также управляет перенаправлением неканонических URL на канонические, что особенно важно для поддержания хорошей SEO-оптимизации.
Функция не выполняет перенаправления для следующих типов URL:
- Страницы с поисковыми запросами
- Административные URL
- Запросы на получение ленты или трекбеков
- POST-запросы
- URL, не поддерживающие красивую структуру ссылок (Pretty Permalinks)
redirect_canonical( string $requested_url = null, bool $do_redirect = true ): string|void
Параметры
- $requested_url (строка, необязательный) — URL, который был запрошен, используется для определения необходимости перенаправления. По умолчанию
null
. - $do_redirect (логический, необязательный) — указывает, нужно ли выполнять перенаправление на новый URL. По умолчанию
true
.
Возвращаемое значение
- string|void — функция возвращает строку с URL, если перенаправление не выполняется, и
void
, если редирект был осуществлён.
Пример 1: Отключение перенаправления для пагинации записей
По умолчанию WordPress перенаправляет на главную страницу записи при попытке доступа к страницам пагинации. Мы можем отключить это поведение следующим образом:
add_filter('redirect_canonical', 'disable_pagination_redirect');
function disable_pagination_redirect($redirect_url) {
if (is_paged()) {
return false; // Отключаем редирект
}
return $redirect_url; // Возвращаем стандартный редирект
}
Результат: Теперь при обращении к URL, например /mypage/page/2
, не будет перенаправления на /mypage/
.
Пример 2: Полное отключение канонических редиректов
Если вы хотите полностью отключить функциональность канонических редиректов, вы можете сделать это следующим образом:
remove_action('template_redirect', 'redirect_canonical');
Результат: Теперь WordPress не будет выполнять никакие перенаправления, что может быть полезно в специфических случаях, когда вам нужно вручную контролировать логику перенаправления.
Пример 3: Кастомное перенаправление для ошибок 404
В этом примере мы перенаправляем пользователей на главную страницу, если они пытаются получить доступ к несуществующей записи, сохраняя оригинальный запрашиваемый URL.
add_action('template_redirect', 'custom_redirect_for_404');
function custom_redirect_for_404() {
if (is_404()) {
$redirect_url = home_url(); // Главная страница
wp_redirect($redirect_url, 301);
exit; // Завершаем выполнение
}
}
Результат: При обращении к несуществующей странице пользователи будут перенаправлены на главную страницу.
Пример 4: Создание 301 редиректа для обновления URL
Этот пример показывает, как автоматически перенаправить старые URL на новые канонические ссылки, используя redirect_canonical()
.
add_action('template_redirect', 'redirect_old_urls');
function redirect_old_urls() {
$current_url = trim(home_url(add_query_arg(null, null)), '/');
if ($current_url === 'old-url') {
$new_url = 'new-url'; // Новый URL
wp_redirect($new_url, 301); // Перенаправление с кодом 301
exit;
}
}
Результат: При обращении к old-url
, пользователи будут перенаправлены на new-url
.
Заключение
Функция redirect_canonical()
является важным инструментом для SEO-оптимизации вашего сайта на WordPress. Она помогает избежать дублирования контента, автоматизирует перенаправления и позволяет вам управлять поведением вашего сайта, обеспечивая более эффективное взаимодействие с пользователями и поисковыми системами.