Как закрыть дубли страниц attachment в WordPress от индексации без поломки SEO

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

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

Как понять, что у вас именно эта проблема

Сначала проверьте, действительно ли страницы вложений доступны и индексируются. Не стоит закрывать их «на всякий случай», если у вас тема или плагин используют attachment pages как часть навигации.

  • Откройте несколько URL вложений вручную: обычно это адрес вида /attachment/... или отдельная страница медиафайла.
  • Проверьте отчёт Страницы в Google Search Console на наличие URL с типом вложения.
  • Посмотрите исходный код страницы: если там нет полезного текста, а только изображение и стандартные элементы темы, это типичный кандидат на закрытие.
  • Проверьте, не ведут ли внутренние ссылки на attachment page из галерей, блоков изображений или старых записей.

Когда закрывать, а когда не трогать

Закрывать имеет смысл, если attachment page не несёт самостоятельной ценности: нет описания, нет уникального контента, нет сценария, где пользователь должен попасть именно на страницу вложения. Если же у вас медиа-каталог или отдельная логика показа файлов, сначала проверьте, не сломает ли редирект пользовательский сценарий.

ПодходЧто делаетКогда подходит
ПлагинЗакрывает дубли и ставит редиректЕсли нужен быстрый и безопасный вариант без правки темы
КодДаёт точный контроль над редиректом и meta robotsЕсли вы ведёте проект и хотите предсказуемое поведение
Ничего не делатьОставляет attachment pages как естьТолько если они реально полезны и индексируются осознанно

Пошаговое решение: закрываем attachment pages от индексации

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

Вариант 1: редирект attachment page на родительскую запись или файл

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

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

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

Вариант 2: добавить noindex для attachment pages

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

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

    return $robots;
});

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

Вариант 3: использовать возможности SEO-плагина

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

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

Что проверить после внедрения

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

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

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

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

В ответе вы увидите, есть ли редирект и куда он ведёт. Если вместо ожидаемого ответа приходит 200 OK, значит правило не сработало или его перехватывает другая логика темы/плагина.

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

Редирект поставили, но attachment pages всё ещё индексируются

Чаще всего причина в том, что поисковик ещё не переобошёл старые URL. Это нормально: после изменения нужно время. Если же в выдаче продолжают появляться новые страницы, проверьте, нет ли внутренних ссылок на attachment page из галерей, sitemap или шаблонов темы.

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

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

Плагин SEO конфликтует с кодом

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

Использовали 302 вместо 301

Для постоянного удаления attachment page из индекса нужен именно постоянный редирект. Временный редирект оставляет поисковику сигнал, что URL может вернуться, и это хуже для очистки индекса.

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

Не вставляйте такой код в произвольный файл темы без резервной копии. Лучше вынести его в небольшой mu-plugin или отдельный плагин проекта. Тогда при обновлении темы логика не пропадёт.

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

  • Сначала проверьте 5–10 разных attachment URL вручную.
  • Убедитесь, что редирект не ломает скачивание файлов.
  • Проверьте карту сайта: attachment pages не должны туда попадать, если вы решили их закрыть.
  • После изменения очистите кэш страницы и, если нужно, кэш CDN.

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

Как создать внешние таблицы в WordPress с помощью shortcode
13.09.2026
Как изменить размер и оптимизировать изображения в WordPress: практические решения и примеры кода
13.09.2026
Отложенные комментарии в WordPress: настройка и примеры
13.09.2026
Изменение атрибута alt у изображений в WordPress: практические решения и примеры кода
13.09.2026
Как создать динамические таблицы в WordPress с помощью shortcode
22.09.2026