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

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

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

Что такое страницы вложений и почему они попадают в поиск

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

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

С точки зрения SEO это не катастрофа, но и пользы мало. Лучше, чтобы поисковик видел основную запись, а не техническую оболочку файла.

Какой вариант обработки выбрать

Есть два разных действия, и их лучше не путать:

  • закрыть attachment-страницы от индексации — чтобы они не появлялись в поиске;
  • сделать редирект — чтобы при заходе на такой URL пользователь сразу попадал на родительскую запись.

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

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

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

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

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

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

add_action('template_redirect', function () {
    if (is_attachment()) {
        wp_redirect(home_url('/'), 301);
        exit;
    }
});

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

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

Как настроить редирект на родительскую запись

Для attachment-страницы родительская запись хранится в поле post_parent. Если файл был прикреплён к записи, WordPress знает, к какому материалу он относится. Именно на этот URL и имеет смысл отправлять пользователя.

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

Код лучше размещать в дочерней теме или в небольшом плагине, чтобы он не пропал после обновления темы:

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

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

Здесь используется wp_safe_redirect(), а не голый header(). Для WordPress это более корректный вариант: функция проверяет допустимость адреса и лучше вписывается в стандартный поток загрузки.

Если у вас есть вложения, которые должны открываться отдельно, этот код нужно доработать. Например, исключить определённые типы файлов или оставить PDF без редиректа. Иначе вы потеряете отдельные страницы, которые реально используются как посадочные.

Что делать, если у вложения нет родительской записи

Это частый случай. Изображение могли загрузить через медиатеку, а не из конкретной записи. Тогда post_parent будет равен нулю, и WordPress не знает, куда вести пользователя.

В такой ситуации есть три нормальных варианта:

  • редиректить на главную;
  • редиректить на страницу медиатеки или раздела сайта, если она у вас есть;
  • оставить страницу без редиректа, но закрыть её от индексации.

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

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

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

Проверьте так:

  1. Откройте URL вложения в режиме инкогнито.
  2. Убедитесь, что происходит переход на родительскую запись или на выбранный вами адрес.
  3. Посмотрите код ответа сервера. Для постоянного переноса должен быть 301.
  4. Если используете SEO-плагин, проверьте, что attachment-страницы не попадают в sitemap и не получают индексируемые мета-теги.
  5. В Search Console отправьте на переобход несколько старых URL, если они уже были в индексе.

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

На что обратить внимание, чтобы не создать новые проблемы

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

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

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

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

Удаляем стандартную WooCommerce корзину и создаём собственную AJAX корзину в теме WordPress
03.10.2026
Как найти и убрать дублирующиеся meta description в WordPress
13.08.2026
Как добавить динамический класс в меню WordPress
01.10.2026
Как настроить отображение разных типов записей в теме WordPress
01.10.2026
Оптимизация темы WordPress для скорости: лучшие практики и примеры
01.10.2026