wpurok.ru wordpress WPUrok

Как найти и убрать дубли страниц в WordPress из-за archive и attachment

Если в индексе появляются лишние страницы, а в отчётах по SEO всплывают дубли с похожими заголовками, часто проблема не в контенте, а в служебных типах страниц WordPress. На практике чаще всего мешают архивы автора, даты, вложения медиафайлов и страницы attachment, которые создаются автоматически и редко нужны как отдельные посадочные страницы.

Сценарий типичный: сайт небольшой, контент нормальный, но поисковик видит десятки URL с одинаковым или почти одинаковым содержимым. В результате распыляется вес, усложняется обход, а в панели вебмастера появляются предупреждения о дублировании. Ниже — как быстро диагностировать источник и убрать его без поломки сайта.

Где именно появляются дубли и почему это важно

В WordPress дубли часто возникают не из-за ошибок редактора, а из-за стандартной логики CMS. Архивы автора и даты могут дублировать рубрики или подборки записей. Attachment-страницы создаются для каждого загруженного файла и иногда индексируются отдельно, хотя по смыслу это просто техническая страница вложения.

Если на сайте уже есть нормальная структура рубрик, теги и отдельные страницы, служебные архивы часто только мешают. Особенно это заметно на сайтах с одним автором, где архив автора повторяет ленту блога, или на проектах, где изображения открываются на отдельной странице attachment без полезного текста.

Что обычно нужно проверить первым

  • есть ли в индексе URL вида /author/... и /date/...;
  • открываются ли страницы вложений по адресу медиафайла как отдельные HTML-страницы;
  • не создаёт ли тема или SEO-плагин свои архивы с тем же содержимым;
  • не дублируются ли заголовки и meta description у архивов и основных страниц.

Диагностика проблемы: как понять, что дубли идут именно отсюда

Сначала не трогайте код. Проверьте, какие URL реально попали в индекс и какие из них отдают одинаковый или почти одинаковый контент. Для этого удобно использовать поиск по сайту в поисковике, отчёты Search Console и просмотр исходного HTML.

Если у вас есть доступ к серверу, можно быстро посмотреть заголовки ответа и убедиться, что служебные страницы не закрыты от индексации. Для attachment-страниц часто видно, что они отдают обычный 200 OK и полноценный HTML, хотя по смыслу это не посадочная страница.

curl -I https://example.com/author/admin/

Если в ответе нет noindex, редиректа или другого явного ограничения, такая страница может попасть в индекс. Аналогично проверьте URL вложения, например страницу изображения, а не сам файл в медиабиблиотеке.

Что лучше отключать: архивы, attachment или оба варианта

Здесь нет универсального ответа. Если на сайте один автор и архив автора не несёт ценности, его обычно проще закрыть от индексации или отключить. Если архивы по датам не используются посетителями, их тоже можно убрать из индекса. Attachment-страницы почти всегда стоит либо перенаправить на сам файл, либо закрыть, если они не нужны как отдельный контентный слой.

ВариантКогда подходитМинус
Плагин SEO/чисткиНужно быстро закрыть архивы и вложения без правки темыЧасть настроек зависит от плагина
Код в functions.phpНужен точечный контроль и минимум зависимостейНужно аккуратно тестировать после обновлений темы
Комбинированный подходАрхивы закрыть плагином, attachment перенаправить кодомНужно следить, чтобы не было конфликтов

Если используете плагин для технической чистки, проверьте, умеет ли он отключать архивы автора, даты и attachment без лишних побочных эффектов. Например, в Clearfy Pro есть инструменты для удаления дублей и технической чистки сайта, но применять их нужно только после проверки, какие URL реально используются на проекте: https://wpshop.ru/plugins/clearfy?utm_source=wpurok.ru&utm_medium=article&utm_campaign=kak-najti-i-ubrat-dubli-stranic-v-wordpress-iz-za-archive-i-attachment

Пошаговое решение без лишнего риска

1. Закройте attachment-страницы редиректом на файл или родительскую запись

Если attachment-страницы не нужны, самый безопасный вариант — перенаправлять их на сам файл или на родительскую запись, если она есть. Это убирает пустые страницы из индекса и не ломает доступ к медиафайлам.

<?php
add_action('template_redirect', function () {
    if (is_attachment()) {
        $parent_id = get_post_field('post_parent', get_the_ID());

        if ($parent_id) {
            wp_safe_redirect(get_permalink($parent_id), 301);
            exit;
        }

        $file = wp_get_attachment_url(get_the_ID());
        if ($file) {
            wp_safe_redirect($file, 301);
            exit;
        }
    }
});

Этот вариант хорош тем, что не требует правки шаблонов. Но если тема уже сама обрабатывает attachment-страницы, проверьте, не создаётся ли конфликт редиректов.

2. Отключите архивы автора и даты, если они не нужны

Если сайт ведёт один автор или архивы по датам не используются как навигация, их можно закрыть от индексации через SEO-плагин или код. Кодовый вариант особенно полезен, если вы не хотите зависеть от интерфейса плагина.

<?php
add_action('template_redirect', function () {
    if (is_author() || is_date()) {
        wp_safe_redirect(home_url('/'), 301);
        exit;
    }
});

Такой редирект подходит не всем. Если архив автора нужен пользователям, лучше не редиректить, а оставить страницу доступной и закрыть её от индексации через noindex. Редирект — это уже изменение пользовательского сценария.

3. Уберите индексацию служебных страниц на уровне SEO-настроек

Если вы не хотите жёстких редиректов, можно оставить страницы доступными, но запретить их индексацию. Это полезно для архивов, которые нужны как навигация, но не должны конкурировать с основным контентом.

Проверьте, чтобы на таких страницах не было одновременно noindex и каноникала на саму себя с дублирующимся URL-параметром. Иначе поисковик может дольше переобходить такие страницы, чем нужно.

Как проверить, что решение сработало

После внедрения не ограничивайтесь открытием страницы в браузере. Проверьте ответ сервера, HTML и фактическое поведение поисковых роботов.

  • откройте URL attachment и убедитесь, что он редиректит на нужный адрес;
  • проверьте, что архив автора или даты больше не отдают индексируемую страницу, если вы их отключали;
  • посмотрите исходный код и убедитесь, что на служебных страницах нет лишнего контента;
  • в Search Console отправьте URL на повторную проверку, если они уже были в индексе;
  • через несколько дней проверьте, не появились ли новые дубли с тем же шаблоном URL.

Для быстрой проверки редиректа удобно использовать:

curl -I https://example.com/?attachment_id=123

Если ответ стал 301 и ведёт на нужный URL, базовая часть решения работает. Если страница всё ещё отдаёт 200, значит редирект не срабатывает или конфликтует с темой/плагином.

Частые ошибки и как их исправить

Редирект поставили, но дубли остались в индексе

Это нормально в первые дни после изменений. Поисковику нужно время на переобход. Если же старые URL продолжают активно появляться, проверьте, нет ли внутренних ссылок на attachment-страницы или архивы в меню, хлебных крошках и блоках темы.

Закрыли архивы, а сломалась навигация

Так бывает, если архивы использовались как реальная часть структуры сайта. Например, архив автора был единственной страницей со списком публикаций конкретного автора. В таком случае лучше не редиректить, а оставить страницу доступной и закрыть её от индексации.

Сделали редирект attachment на главную

Это плохой вариант. Пользователь теряет контекст, а поисковик видит массовый редирект на нерелевантную страницу. Если у вложения есть родительская запись, редиректите туда. Если нет — на сам файл или аккуратно закрывайте страницу от индексации.

Появились циклы редиректов

Обычно причина в том, что тема, SEO-плагин и ваш код одновременно пытаются обработать один и тот же URL. Оставьте только один источник логики. Если редирект уже делает плагин, не дублируйте его в functions.php.

Практические советы по безопасности и производительности

Не правьте родительскую тему напрямую. Если добавляете код, используйте дочернюю тему или небольшой mu-plugin. Так изменения не потеряются после обновления. Для редиректов и технических правил это особенно важно: одна лишняя правка в шаблоне может сломать весь маршрут URL.

Если на сайте много медиафайлов, attachment-страницы лучше закрыть централизованно, а не вручную поштучно. Это уменьшает количество индексируемых технических URL и упрощает поддержку. Но перед массовым отключением проверьте, не используют ли эти страницы какие-то внутренние ссылки, галереи или кастомные блоки темы.

Если нужен не только контроль дублей, но и общая чистка сайта от технического мусора, имеет смысл смотреть на инструменты, которые умеют работать с архивами, метаданными и SEO-настройками без ручного редактирования шаблонов. Но даже в этом случае сначала тестируйте на staging-копии, а потом переносите изменения на боевой сайт.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше