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

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

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

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

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

Типичные признаки:

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

Что именно нужно закрывать

Нужно отличать три сущности: сам файл изображения, attachment-страницу и ссылку на медиафайл в редакторе. Закрывать от индексации стоит только attachment-страницу. Файл изображения должен оставаться доступным, иначе сломаются вставки в контенте, Open Graph-превью и загрузка картинок на сайте.

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

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

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

// Пример: получить URL attachment-страницы и URL файла
$attachment_id = 123;
$attachment_page = get_attachment_link( $attachment_id );
$file_url = wp_get_attachment_url( $attachment_id );

// $attachment_page — это то, что обычно не нужно индексировать
// $file_url — прямой путь к файлу изображения

Рабочие способы закрыть attachment-страницы

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

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

Вариант 1: редирект attachment-страниц на файл

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

add_action( 'template_redirect', function () {
    if ( is_attachment() ) {
        $file = wp_get_attachment_url( get_queried_object_id() );

        if ( $file ) {
            wp_redirect( $file, 301 );
            exit;
        }
    }
} );

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

Вариант 2: поставить noindex для attachment-страниц

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

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

    return $robots;
} );

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

Вариант 3: отключить attachment-страницы через шаблон

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

add_action( 'template_redirect', function () {
    if ( is_attachment() ) {
        $post = get_post();
        $parent_id = $post ? (int) $post->post_parent : 0;

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

        $file = wp_get_attachment_url( get_queried_object_id() );
        if ( $file ) {
            wp_redirect( $file, 301 );
            exit;
        }
    }
} );

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

Пошаговое решение без лишнего риска

  1. Проверьте, используются ли attachment-страницы в теме или в старых ссылках.
  2. Сделайте резервную копию или хотя бы экспорт текущих правил редиректа.
  3. Выберите один способ: редирект, noindex или отключение шаблона.
  4. Добавьте правило только для is_attachment(), не трогая обычные записи и страницы.
  5. Очистите кеш сайта и CDN, если они есть.
  6. Переобойдите несколько URL вручную и проверьте заголовки ответа.

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

Проверка должна быть не только визуальной. Откройте attachment-URL в браузере и убедитесь, что он ведёт туда, куда вы задумали: на файл, на родительскую запись или отдаёт noindex без редиректа.

Дальше проверьте заголовки ответа и мета-robots. Если есть доступ к консоли, можно быстро посмотреть ответ сервера:

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

Что искать в ответе:

  • 301 или 302, если вы делали редирект;
  • X-Robots-Tag или meta robots с noindex, если выбрали закрытие от индексации;
  • отсутствие цепочки редиректов;
  • отсутствие 404, если файл или родительская запись реально существуют.

После этого откройте Search Console и проверьте, не растёт ли число новых attachment-URL в отчёте об индексировании. Старые URL могут исчезать не сразу, это нормально.

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

Закрыли не attachment-страницу, а сам файл

Такое бывает, когда правят robots.txt или шаблон слишком грубо. В результате картинка перестаёт открываться по прямой ссылке, а это уже ломает контент и предпросмотр. Исправление простое: ограничьте правило только условием is_attachment() или конкретным шаблоном вложения.

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

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

Получили цепочку редиректов

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

Сломали кеш после правок

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

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

Не стоит массово переписывать все медиа-URL через .htaccess без понимания структуры сайта. Для WordPress безопаснее точечная логика через template_redirect или через SEO-плагин, если он умеет управлять robots для attachment. Это проще откатить и легче проверить.

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как закрыть xmlrpc.php в WordPress и не сломать нужные интеграции
18.08.2026
Как закрыть страницы поисковой выдачи WordPress от индексации без поломки поиска
24.08.2026
Как закрыть от индексации страницы внутреннего поиска WordPress без поломки сайта
27.08.2026
Как отключить XML-RPC и pingback в WordPress без поломки нужных интеграций
06.09.2026
Как закрыть от индексации страницы авторов и таксономий в WordPress без robots.txt
30.08.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее