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

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

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

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

Сценарий обычно один и тот же: в индексе появляются URL вида /image-name/ или ?attachment_id=123, а в отчётах видны страницы с нулевой ценностью. Это особенно заметно, если тема или плагин медиа-библиотеки добавляет ссылки на attachment-страницы в галереи, блоки изображений или хлебные крошки.

Что проверить в первую очередь

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

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

Диагностика: как понять, что именно индексируется

Самый быстрый способ — взять несколько URL из отчёта индексации и проверить ответ сервера. Если attachment-страница отдаёт 200 OK и содержит почти пустой шаблон, это кандидат на редирект или noindex. Если же она уже отдаёт 404 или 410, значит проблема может быть в старых ссылках и кэше.

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

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

Смотрите на три вещи: статус, Location при редиректе и наличие X-Robots-Tag, если вы добавляете его на уровне сервера или плагина.

Рабочие варианты решения

Универсального ответа нет: выбор зависит от того, как у вас устроен контент и нужна ли отдельная страница вложения вообще. Ниже — три подхода, которые реально используют на проектах.

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

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

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

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

    global $post;

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

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

    if ($parent_id) {
        $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;
});

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

Если нужен именно noindex

Иногда редирект нежелателен, например если внешние ссылки уже ведут на attachment-URL и вы не хотите менять поведение. Тогда можно добавить мета-тег noindex,follow только для attachment-страниц:

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

    return $robots;
});

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

Что делать с уже проиндексированными URL

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

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

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

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

  • attachment-URL отдают 301 на нужный адрес или содержат noindex;
  • внутренние ссылки больше не ведут на attachment-страницы;
  • в Search Console снижается число URL с типом «Страница с перенаправлением» или «Исключено: noindex»;
  • в кэше и CDN не осталось старых HTML-версий attachment-страниц;
  • canonical на медиа-страницах не указывает на сам attachment, если вы его отключаете.

Проверить редирект можно и через curl:

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

Если всё настроено правильно, вы увидите 301 и корректный Location. Если вместо этого остаётся 200, значит код не сработал, его перехватывает другой плагин или тема.

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

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

Так делают часто, но это слишком грубо. Если у attachment есть родительская запись, логичнее отправлять пользователя туда. Если родителя нет, лучше вести на файл или аккуратно ставить noindex, чем превращать всё в массовый редирект на главную.

Забыли про кэш

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

Сломали медиа-ссылки в старом контенте

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

Поставили noindex, но оставили мусорные ссылки внутри сайта

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

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

Лучше вносить такую правку в дочернюю тему или отдельный мини-плагин, а не прямо в основной шаблон. Тогда обновление темы не затрёт изменения. Если сайт большой, не добавляйте лишние запросы к базе в обработчик редиректа: проверка attachment через is_attachment() и global $post обычно достаточно лёгкая.

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

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

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

Как создать и использовать собственные короткие функции в WordPress
28.01.2026
Оптимизация загрузки шаблонов в WordPress
09.03.2026
Как отключить attachment-страницы в WordPress и настроить 301-переадресацию
29.08.2026
Как удалить неиспользуемые CSS и JS в WordPress для ускорения сайта
09.02.2026
Автоматический импорт данных из Excel в WordPress: практическое руководство
25.03.2026