Если в индексе появляются лишние страницы, а в отчётах по 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-копии, а потом переносите изменения на боевой сайт.