Как отключить индексацию attachment-страниц в WordPress и убрать дубли

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

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

Когда attachment-страницы становятся проблемой

Типичный симптом — в Search Console или Яндекс.Вебмастере появляются URL вида /sample-image/, /photo-name/ или вложения с тонким контентом. Часто на такой странице есть только заголовок, изображение и ссылка на файл. Для пользователя это бесполезно, для индекса — слабый дубль.

Проверить проблему можно быстро:

  • откройте несколько URL вложений вручную и посмотрите, есть ли там полноценный текст;
  • проверьте исходный код на наличие meta robots и канонического URL;
  • посмотрите, не попадают ли attachment-страницы в sitemap;
  • сравните число проиндексированных URL с количеством реальных записей и страниц.

Если вложения уже индексируются, одной правки в robots.txt обычно недостаточно. Поисковик может продолжать держать старые URL в индексе, пока не увидит явный сигнал: редирект, noindex или удаление страницы.

Что лучше сделать: редирект, noindex или оставить как есть

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

ПодходКогда подходитМинус
Редирект 301Attachment-страницы не нужны, нужен чистый индексНужно аккуратно проверить родительские URL
noindexНужно оставить страницу доступной, но убрать из поискаURL может ещё какое-то время жить в индексе
Оставить как естьРедкий случай, когда вложение — полноценная посадочная страницаРиск дублей и слабого контента

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

Пошаговое решение через код

Самый предсказуемый способ — добавить редирект для attachment-страниц в тему или в небольшой mu-plugin. Так вы не зависите от настроек темы и не ждёте, пока плагин обновится.

1. Перенаправить attachment-страницы

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

<?php
add_action( 'template_redirect', function () {
    if ( ! is_attachment() ) {
        return;
    }

    $parent_id = wp_get_post_parent_id( get_queried_object_id() );

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

    $file_url = wp_get_attachment_url( get_queried_object_id() );
    if ( $file_url ) {
        wp_safe_redirect( $file_url, 301 );
        exit;
    }

    wp_safe_redirect( home_url( '/' ), 301 );
    exit;
} );

Этот вариант работает без выдуманных хуков и не требует сторонних библиотек. Важно не использовать wp_redirect() без проверки URL, если есть риск подмены адреса. Для внутреннего редиректа wp_safe_redirect() безопаснее.

2. Добавить noindex как запасной вариант

Если по какой-то причине редирект не подходит, можно закрыть attachment-страницы от индексации через robots meta. Это не заменяет редирект, но помогает, если вы хотите сохранить страницу доступной для просмотра.

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_attachment() ) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
    }

    return $robots;
} );

Такой способ корректно работает в современных версиях WordPress, где robots meta формируется через фильтр wp_robots. Если у вас уже стоит SEO-плагин, проверьте, не переопределяет ли он этот вывод своими настройками.

3. Убрать attachment-URL из sitemap, если они туда попали

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

Если sitemap собирается кодом, ориентируйтесь на логику исключения пост-типов, а не на ручное удаление URL из XML. Иначе после следующей генерации проблема вернётся.

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

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

  • откройте несколько attachment-страниц и убедитесь, что они редиректят с кодом 301;
  • проверьте заголовки ответа через DevTools или curl -I https://site.ru/attachment-url/;
  • посмотрите исходный код страницы, если вы оставили noindex, и убедитесь, что мета-тег есть;
  • в Search Console отправьте проверку URL и посмотрите, как робот видит страницу;
  • через пару обходов проверьте, уменьшается ли число attachment-URL в отчётах по индексации.

Пример проверки через командную строку:

curl -I https://example.com/sample-attachment/

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

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

Редирект ведёт не туда

Это случается, если у вложения нет родителя, а код безусловно отправляет пользователя на несуществующую запись. Решение простое: сначала проверяйте wp_get_post_parent_id(), а потом уже выбирайте целевой URL. Если родителя нет, используйте файл вложения или главную страницу.

Attachment-страницы всё ещё в индексе

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

SEO-плагин перезаписывает robots meta

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

Редирект ломает изображения в старых записях

Иногда путают attachment-страницу и сам файл изображения. Редирект должен срабатывать именно на страницу вложения, а не на файл в /uploads/. Если после правки перестали открываться сами картинки, значит правило слишком широкое и затронуло не тот URL.

Что учесть для безопасности и производительности

Для таких задач лучше не плодить отдельные плагины, если достаточно нескольких строк в mu-plugin. Это снижает риск конфликта после обновления темы и упрощает контроль кода. Если вы всё же используете плагин для SEO, держите правило в одном месте: либо в плагине, либо в коде темы, но не в обоих сразу.

Ещё один практический момент — не делайте массовые редиректы на главную без разбора. Для пользователя это выглядит как мягкая ошибка, а для поисковика может быть сигналом о плохой структуре сайта. Лучше отправлять вложение туда, где оно реально использовалось: на родительскую запись или на сам файл.

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

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

Короткий чек-лист перед публикацией правок

  • Проверить, есть ли attachment-страницы в индексе.
  • Выбрать один основной способ: 301-редирект или noindex.
  • Убедиться, что редирект не затрагивает файлы в /uploads/.
  • Проверить robots meta и canonical на странице вложения.
  • Исключить attachment-URL из sitemap, если они туда попали.
  • Прогнать несколько URL через curl -I и браузер.
  • Отправить проблемные URL на переобход в вебмастере.

Если после этого attachment-страницы перестали открываться как отдельные документы, а в отчётах вебмастеров больше не растёт число мусорных URL, значит задача решена правильно. Если нет — почти всегда проблема в том, что редирект или meta robots добавлены не на том уровне: тема, SEO-плагин и кастомный код конфликтуют между собой.

Как удалить все оставшиеся данные от удалённых плагинов в WordPress
19.12.2025
Как использовать хуки в WordPress для решения конкретных задач
09.01.2026
Руководство по созданию и использованию REST API в WordPress
23.11.2025
Как создать уникальный Meta Box в WordPress с примером кода
22.12.2025
Как использовать хук и фильтр post_status в WordPress для управления статусами записей
05.03.2026
×

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

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

пишет статьи

готовит SEO

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

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