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

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

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

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

Сначала проверьте, что в индексе действительно есть URL вида /sample-image/, ?attachment_id=123 или похожие страницы вложений. В Search Console это видно по отчётам об индексировании и по результатам поиска по сайту.

Признаки, которые встречаются чаще всего

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

Если у вас включён SEO-плагин, он может уже ставить noindex для медиа-страниц. Но полагаться только на это не стоит: настройки темы, старые записи и сторонние плагины иногда меняют поведение.

Что именно нужно отключить

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

ПодходЧто делаетКогда подходит
Плагин SEOСтавит noindex и иногда редиректит attachment-страницыЕсли нужен быстрый результат без кода
Код в теме или mu-pluginДаёт точный контроль над редиректом и мета-роботамиЕсли нужен предсказуемый технический вариант
Только robots.txtОграничивает обход, но не решает индексацию надёжноКак вспомогательная мера, не как основное решение

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

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

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

    $post = get_post();
    if ( ! $post ) {
        wp_safe_redirect( home_url( '/' ), 301 );
        exit;
    }

    $parent_id = (int) $post->post_parent;

    if ( $parent_id > 0 ) {
        $parent_url = get_permalink( $parent_id );
        if ( $parent_url ) {
            wp_safe_redirect( $parent_url, 301 );
            exit;
        }
    }

    $file_url = wp_get_attachment_url( $post->ID );
    if ( $file_url ) {
        wp_safe_redirect( $file_url, 301 );
        exit;
    }

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

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

Если нужен только noindex

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

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

    return $robots;
} );

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

Когда лучше использовать плагин

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

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

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

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

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

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

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

В ответе должен быть либо 301 Moved Permanently, либо другой ожидаемый код, если вы выбрали альтернативную схему.

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

Редирект сделан на главную страницу для всех вложений

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

В robots.txt добавили Disallow и решили, что этого достаточно

Это распространённая ошибка. Запрет обхода не равен удалению из индекса. Если URL уже известен поисковику, он может оставаться в выдаче без контента. Для таких страниц нужен редирект или noindex, а robots.txt — только дополнение.

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

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

Attachment-страницы всё равно появляются в индексе

Причина может быть в кеше, в старых sitemap или в том, что поисковик ещё не переобходил сайт. После изменения дайте время на переобход, затем проверьте карту сайта и внутренние ссылки. Если URL остались в выдаче надолго, отправьте их на повторную проверку в Search Console.

Безопасность и производительность

Редиректы и фильтры лучше держать в отдельном небольшом сниппете, а не в случайном файле темы. Если вы работаете на продакшене, сначала проверьте код на staging-копии. Ошибка в условии is_attachment() или в логике редиректа может затронуть не только медиа, но и другие шаблоны.

С точки зрения производительности этот сценарий не тяжёлый, но лишние attachment-страницы всё равно создают шум: робот тратит обход на бесполезные URL, а сервер отдаёт больше ненужных ответов. Для больших сайтов это уже не косметика, а реальная техническая уборка.

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

  • Проверить, есть ли attachment-URL в индексе.
  • Решить, нужен ли редирект или достаточно noindex.
  • Добавить код в дочернюю тему или mu-plugin.
  • Проверить HTTP-ответ и исходный код страницы.
  • Убедиться, что attachment-URL не попадают в sitemap.
  • Переобойти проблемные URL в Search Console.

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

Как удалить все незавершённые заказы WooCommerce без плагинов
23.04.2026
WooCommerce: автоматическое изменение стоимости товаров после оплаты
20.06.2026
Как изменить структуру ссылок в WordPress без потери позиций в поиске
18.03.2026
WooCommerce: как избежать ошибок при автоматическом удалении зависших вариантов товаров
06.08.2026
Как найти и удалить дубли страниц в WordPress без потери индексации
16.08.2026