Как закрыть от индексации страницы вложений медиабиблиотеки в WordPress

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

Если у вас в Search Console всплывают URL вида /attachment/, /image-name/ или страницы вложений открываются как отдельные записи, это не баг поисковика. WordPress действительно умеет создавать для медиа отдельные страницы, и их нужно либо отключать, либо закрывать от индексации, либо редиректить на сам файл или родительскую запись.

Как понять, что проблема именно в страницах вложений

Сначала проверьте, действительно ли WordPress отдает отдельные страницы attachment. Это можно сделать вручную и через индексацию в поиске.

Что смотреть в браузере и в поиске

  • Откройте URL изображения не как файл, а как страницу вложения. Если видите отдельную HTML-страницу с заголовком и картинкой, значит attachment-страницы включены.
  • Проверьте отчеты Search Console по страницам с низкой ценностью или дублирующимся заголовкам.
  • Сделайте поиск по сайту в Google по шаблону site:example.com inurl:attachment или по названию файла.
  • Посмотрите исходный код страницы вложения: если там нет полезного текста, это почти наверняка кандидат на исключение из индекса.

Важно не путать страницы вложений с самими файлами в /uploads/. Файл изображения должен оставаться доступным, а вот HTML-страница вокруг него чаще всего не нужна.

Что лучше: редирект, noindex или отключение attachment-страниц

Подход зависит от того, как у вас устроен сайт. Если медиа-страницы вообще не нужны, лучше убрать их на уровне шаблона или плагина. Если они уже в индексе и нужно быстро снизить риск, используйте noindex или 301-редирект.

ВариантКогда подходитПлюсыМинусы
Редирект 301Страницы вложений не нужны совсемУбирает лишний URL, передает сигнал на целевую страницуНужно аккуратно выбрать цель редиректа
noindexНужно оставить страницу доступной, но не в индексеПросто внедрить, не ломает доступ к страницеURL остается в обходе, эффект не мгновенный
Отключение attachment-страницНужна системная чистка сайтаУбирает проблему на уровне логики WordPressТребует кода или плагина, надо тестировать тему

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

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

Редирект attachment-страниц на родительскую запись

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;
    }

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

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

Добавить noindex для страниц вложений

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

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

    return $robots;
} );

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

Если нужен плагин: когда это оправдано

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

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

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

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

  • Откройте URL attachment-страницы в режиме инкогнито и проверьте код ответа: для редиректа должен быть 301.
  • Если используете noindex, посмотрите исходный код страницы и убедитесь, что мета-robots действительно присутствует.
  • Проверьте, что целевая страница редиректа открывается без цепочки из нескольких переходов.
  • В Search Console отправьте URL на повторную проверку, если они уже были проиндексированы.
  • Через несколько дней повторно проверьте выдачу по site:-запросу и отчетам по страницам с исключением.

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

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

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

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

Редирект ведет на несуществующую страницу

Так бывает, если у вложения нет родителя, а код безусловно отправляет на permalink записи. Исправление простое: проверяйте wp_get_post_parent_id() и задавайте запасную цель.

Поставили noindex, но URL все равно в индексе

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

Сломались изображения или медиа-галереи

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

Дублируются canonical и robots

Если SEO-плагин уже выводит canonical и robots, а вы добавили еще один слой через тему или mu-plugin, проверьте итоговый HTML. Два разных canonical на одной странице — плохой сигнал. Оставьте одно место, где управляется индексация.

Чек-лист перед выкладкой на прод

  • Проверен тип страниц: редиректим именно attachment, а не файлы в uploads.
  • Выбрана одна стратегия: 301, noindex или отключение страниц.
  • Нет конфликта с SEO-плагином и темой.
  • Проверен код ответа через curl -I или DevTools.
  • Внутренние ссылки на attachment-страницы не создаются заново.
  • После изменения отправлены важные URL на переобход в Search Console.

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

Такие правки лучше вносить не в functions.php активной темы, а в маленький mu-plugin или отдельный плагин сайта. Тогда обновление темы не затрет логику, а перенос между окружениями будет проще.

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

Когда attachment-страницы уже не нужны, самый надежный путь — убрать их из выдачи и не создавать новые внутренние ссылки на них. Тогда поисковик быстрее перестанет воспринимать медиа-страницы как отдельные документы, а сайт станет чище в техническом плане.

Как использовать внутренний кеш в WordPress для ускорения сайта
26.09.2026
Удаление неиспользуемых атрибутов и метаданных в WooCommerce: практическое руководство
01.10.2026
Как найти и убрать дубли страниц в WordPress без потери SEO
29.08.2026
Как автоматически удалять старые версии постов в WordPress
28.09.2026
Как запретить XML-RPC запросы в WordPress через .htaccess и PHP
23.08.2026