wphow.ru wordpress WPHow

Как избавиться от дублей страниц в WordPress без плагинов

Дубли страниц — частая проблема, которая негативно сказывается на 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 "ключевая фраза" для обнаружения дублированных заголовков или контента.

Регулярный мониторинг поможет вовремя обнаружить проблемы.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее