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

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

Задача здесь не в том, чтобы удалить сами файлы. Нужно убрать из индекса именно страницы вложений, при этом сохранить изображения и их использование в записях, страницах и блоках Gutenberg.

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

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

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

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

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

Сначала проверьте, существуют ли такие страницы на сайте и как они отвечают серверу. Проще всего взять несколько URL вложений из медиабиблиотеки и открыть их в браузере или через curl.

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

Что важно увидеть:

  • 200 OK — страница реально доступна и может индексироваться;
  • 301/302 — уже есть редирект, но нужно проверить, куда он ведёт;
  • noindex в meta robots — страница не должна попадать в индекс, но URL всё ещё живой;
  • наличие attachment-URL в XML sitemap — это отдельный сигнал, что их лучше исключить.

Если вы используете Search Console, посмотрите отчёт по страницам и найдите URL, похожие на медиа-вложения. Обычно там видны либо пустые страницы, либо URL с очень коротким содержимым.

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

Подход зависит от того, как сайт устроен. Ниже — короткое сравнение.

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

Пошаговое решение: отключаем индексацию и ставим редирект

Шаг 1. Закрываем attachment-страницы от индексации

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

<?php
add_action( 'template_redirect', function () {
    if ( is_attachment() ) {
        $post = get_post();

        if ( ! $post ) {
            return;
        }

        $parent_id = $post->post_parent;

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

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

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

Логика простая: если у вложения есть родительская запись, отправляем на неё. Если родителя нет, ведём на сам файл. Если и это невозможно, уводим на главную как запасной вариант.

Шаг 2. Убираем attachment из sitemap, если он туда попадает

Если sitemap генерируется SEO-плагином, настройка обычно делается в интерфейсе. Но важно проверить результат руками: откройте XML-карту сайта и найдите URL вложений. Их там быть не должно.

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

Шаг 3. Добавляем noindex как дополнительную страховку

Редирект обычно достаточно надёжен, но на практике полезно иметь и noindex, особенно если старые URL уже успели попасть в индекс. Для attachment-страниц можно добавить robots meta через фильтр.

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

    return $robots;
} );

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

Если attachment-страницы нужны для медиа-галереи

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

Если такие страницы действительно нужны, можно оставить их доступными, но:

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

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

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

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

  1. Откройте несколько attachment-URL вручную и убедитесь, что они отдают 301.
  2. Проверьте конечный адрес редиректа: родительская запись, файл или главная.
  3. Посмотрите исходный код страницы и убедитесь, что на attachment-URL не остаётся noindex в конфликте с редиректом — если редирект уже работает, это не критично, но лучше понимать поведение.
  4. Проверьте XML sitemap: attachment-URL не должны там присутствовать.
  5. В Search Console отправьте на переобход несколько старых URL, если они уже были проиндексированы.

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

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

# ожидаемо:
# HTTP/2 301
# location: https://example.com/post-with-image/

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

Редирект ведёт на главную без причины

Такое случается, если у вложения нет post_parent, а код сразу отправляет пользователя на home. Это рабочий запасной вариант, но для части сайтов он слишком грубый. Лучше сначала проверить, можно ли вести на сам файл через wp_get_attachment_url().

Attachment-страницы закрыли, но они всё ещё в индексе

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

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

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

В sitemap остались медиа-страницы

Это частая проблема после установки SEO-плагина или смены настроек. Не полагайтесь на предположение, что всё выключилось автоматически. Откройте sitemap вручную и проверьте конкретные URL.

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

Если вы вносите код вручную, не правьте основной файл темы. Используйте дочернюю тему или mu-plugin, чтобы обновление не затёрло изменения. Для редиректов и robots-логики это особенно важно: одна ошибка в шаблоне может повлиять на весь сайт.

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

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

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

Обновление WordPress без проблем — подробное руководство
31.10.2025
Как удалить все оставшиеся данные от удалённых плагинов в WordPress
19.12.2025
Создаем эффективный shortcode в WordPress с примерами кода
17.11.2025
Как создать уникальный shortcode с атрибутами в WordPress: подробное руководство
27.02.2026
Автоматическое удаление оставшихся частей кода в WordPress после деактивации плагинов
20.11.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше