Как убрать дубли attachment-страниц из XML sitemap WordPress

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

Сценарий типичный: вы включили SEO-плагин, загрузили много изображений, а в карте сайта появились URL вида /image-name/ или ?attachment_id=. Иногда они уже в индексе, иногда только в sitemap. Ниже — как понять, что именно у вас сломано, и как убрать дубли без побочных эффектов.

Что именно считать проблемой

Не каждая attachment-страница — ошибка сама по себе. Проблема начинается, когда:

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

Как быстро диагностировать

Проверка занимает несколько минут. Сначала откройте sitemap и найдите раздел с вложениями. Затем проверьте несколько URL вручную: что отдаёт страница, есть ли canonical, и не закрыта ли она от индексации.

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

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

Как убрать attachment-страницы из sitemap

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

Вариант 1: настройка в SEO-плагине

У большинства SEO-плагинов есть отдельная настройка для медиа-страниц или attachment URL. Если она есть, это предпочтительный вариант: меньше кода, меньше конфликтов после обновлений.

ПодходКогда подходитМинус
Настройка в SEO-плагинеЕсли плагин умеет отключать attachment-страницыЗависит от интерфейса и версии плагина
Код в теме или mu-pluginЕсли нужна точечная и стабильная логикаНужно следить за обновлениями и тестировать
Редирект attachment на родительскую записьЕсли страницы уже в индексе и их надо убратьНужно аккуратно обработать вложения без родителя

Вариант 2: исключение через код

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

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'attachment' === $post_type ) {
        $args['post__in'] = array( 0 );
    }

    return $args;
}, 10, 2 );

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

Вариант 3: редирект attachment-страниц на родительский контент

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

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

    global $post;

    if ( $post && ! empty( $post->post_parent ) ) {
        wp_safe_redirect( get_permalink( $post->post_parent ), 301 );
        exit;
    }

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

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

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

Если нужен рабочий порядок действий, я бы делал так:

  1. Проверил, какой именно sitemap используется: встроенный WordPress или SEO-плагин.
  2. Отключил attachment-страницы в настройках плагина, если такая опция есть.
  3. Если опции нет — исключил attachment из sitemap кодом или фильтром плагина.
  4. Настроил 301-редирект с attachment-страниц на родительский пост.
  5. Проверил canonical и robots meta на страницах вложений.
  6. Отправил sitemap на переобход в Search Console.

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

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

Проверка должна быть не только визуальной. Нужны три уровня контроля: sitemap, HTTP-ответ и индексация.

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

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

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

В ответе ожидайте 301 и заголовок Location с целевым URL. Если видите 200, значит редирект не сработал или его перебивает другой плагин.

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

Отключили attachment в sitemap, но URL всё равно индексируются

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

Редирект ведёт на главную

Так часто делают «на всякий случай», но это плохой вариант для вложений, у которых есть родительская запись. Лучше вести на родительский пост, иначе теряется контекст и растёт вероятность мягких 404 в логике сайта.

Сломались галереи или превью изображений

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

SEO-плагин снова добавил вложения после обновления

Это бывает, если вы правили только шаблон sitemap вручную, а не настройки плагина. После обновления плагин пересобрал карту сайта по своим правилам. В таких случаях лучше использовать штатный фильтр или настройку, а не правку файлов плагина.

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

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

  • Не редактируйте файлы SEO-плагина напрямую: обновление всё перетрёт.
  • Если добавляете код, лучше вынести его в mu-plugin или в дочернюю тему.
  • Проверяйте, не создаёт ли тема собственные архивы вложений или отдельные шаблоны для медиа.
  • После изменений очистите кеш страницы, объектный кеш и CDN, если он есть.

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

Когда лучше не трогать attachment-страницы кодом

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

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

Решение проблемы с дубликатами affiliate ссылок в WordPress
18.04.2026
Исправление проблем с неработающими скриптовыми affiliate ссылками в WordPress
06.08.2026
Как создать автоматический отзыв на affiliate продукт в WordPress с помощью кода
05.04.2026
Как создать собственный виджет для affiliate сайтов WordPress: подробное руководство
30.11.2025
Как отключить архивы авторов и дат из XML sitemap WordPress
29.08.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее