Дубли страниц — частая проблема, которая негативно сказывается на SEO вашего сайта на WordPress. Поисковые системы могут воспринимать дублированный контент как попытку манипуляции и понижать рейтинг сайта. Важно понимать, что даже базовая установка WordPress иногда может порождать дубли страниц, например, за счёт пагинации, архивов, меток и категорий. В этой статье разберём, как избавиться от дублей страниц без установки дополнительных плагинов, используя только функции темы и код.
Почему появляются дубли страниц в WordPress
Основные причины дублирования контента в WordPress:
- Домашняя страница доступна по нескольким URL (например, с www и без, с https и без).
- Архивы категорий, тегов, авторов и дат создают похожие страницы с частично повторяющимся контентом.
- Пагинация блога и архивов иногда дублирует контент первой страницы.
- Произвольные типы записей и таксономии без правильной настройки могут создавать лишние URL.
- Отсутствие или некорректная настройка канонических URL.
Понимание источника дублей — первый шаг к их устранению.
Решение дублированного контента через редиректы и канонические URL
Самый простой способ избежать дублей — настроить правильные канонические URL и редиректы. Сделать это можно без плагинов, добавив код в файл functions.php вашей темы.
Добавление канонических URL вручную
WordPress автоматически выводит канонические URL, но иногда нужно добавить их явно или поправить. Добавьте в functions.php следующий код:
function wphow_add_canonical_tags() {
if (is_singular() || is_home() || is_category() || is_tag() || is_tax() || is_author()) {
echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '" />';
}
}
add_action('wp_head', 'wphow_add_canonical_tags');
Этот код выводит канонический тег для всех основных типов страниц. Если вы используете сложные запросы, нужно доработать функцию.
Редиректы с дублирующихся URL
Иногда полезно сделать редирект с неканонического URL на канонический. Например, с URL с параметрами или без www на www. Вот пример функции для редиректа с www на без www:
function wphow_redirect_www() {
if (strpos($_SERVER['HTTP_HOST'], 'www.') === 0) {
$non_www = substr($_SERVER['HTTP_HOST'], 4);
wp_redirect('https://' . $non_www . $_SERVER['REQUEST_URI'], 301);
exit;
}
}
add_action('template_redirect', 'wphow_redirect_www');
Этот код перенаправит всех посетителей с www на URL без www, что избавит от дублей.
Отключение индексации дублей через robots.txt и мета-теги noindex
Часто дубли появляются на страницах архивов, тегов, пагинации. Правильно настроив robots.txt и добавив мета-теги noindex, можно исключить эти страницы из индексации.
Пример правил robots.txt
Добавьте в корень сайта файл robots.txt с такими строками:
User-agent: *
Disallow: /tag/
Disallow: /author/
Disallow: /page/
Это запретит поисковикам сканировать страницы тегов, авторов и пагинации.
Добавление noindex для страниц архивов и пагинации
Чтобы более гибко управлять индексацией, можно добавить в header.php или через хук wp_head условный вывод мета-тега:
function wphow_noindex_archives() {
if (is_tag() || is_author() || is_date() || is_paged()) {
echo '<meta name="robots" content="noindex,follow" />';
}
}
add_action('wp_head', 'wphow_noindex_archives');
Это скажет поисковикам не индексировать такие страницы, но продолжать переходить по ссылкам.
Уникализация URL и исключение дублей в запросах WordPress
Если у вас есть сложные таксономии и произвольные типы записей, важно правильно формировать запросы, чтобы не создавать дубли.
Использование параметра no_found_rows для пагинации
При выводе постов в цикле используйте параметр no_found_rows в WP_Query, если пагинация не нужна, чтобы уменьшить нагрузку и избежать лишних URL:
$args = array(
'post_type' => 'post',
'posts_per_page' => 10,
'no_found_rows' => true,
);
$query = new WP_Query($args);
Фильтрация запросов для исключения дублирования
Можно добавлять фильтры, чтобы исключить страницы с определёнными параметрами или по условиям. Например, исключим все записи с определённым мета-ключом из архивов:
function wphow_filter_archive_query($query) {
if ($query->is_archive() && $query->is_main_query() && !is_admin()) {
$meta_query = array(
array(
'key' => 'wphow_exclude_from_archive',
'compare' => 'NOT EXISTS'
)
);
$query->set('meta_query', $meta_query);
}
}
add_action('pre_get_posts', 'wphow_filter_archive_query');
Полезные плагины для дополнительной проверки и упрощения работы
Хотя мы и избегаем использовать плагины для решения дублей, иногда удобно применить инструменты для анализа и диагностики.
- Yoast SEO — позволяет управлять каноническими URL и мета-тегами noindex.
- Clearfy Pro — в нем есть модуль для борьбы с дублями и оптимизацией индексации.
- Redirection — помогает настраивать редиректы без кода.
Если вы хотите узнать больше о Clearfy Pro, посетите страницу на официальном сайте.
Проверка и тестирование устранения дублей
После внесения изменений важно проверить, исчезли ли дубли. Для этого используйте:
- Google Search Console — отчет по индексированию и покрытию.
- Screaming Frog SEO Spider — сканер сайта для выявления дублированных страниц.
- Поисковые операторы — например,
site:ваш_домен.ru "ключевая фраза"для обнаружения дублированных заголовков или контента.
Регулярный мониторинг поможет вовремя обнаружить проблемы.