Как отключить индексацию attachment-страниц в WordPress и сделать редирект на файл

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

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

Сценарий обычно один и тот же: в медиабиблиотеке загружены изображения, PDF или другие файлы, WordPress создает для каждого вложения отдельную страницу, а поисковик индексирует эти URL. В результате в отчётах появляются страницы вида /my-photo/ или /document-pdf/, которые не несут самостоятельной ценности. На небольшом сайте это раздражает, на большом — раздувает индекс и мешает анализировать реальные посадочные страницы.

Что именно нужно проверить

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

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

Сначала проверьте, как ведёт себя типичное вложение. Откройте медиафайл в админке, скопируйте его permalink и посмотрите ответ сервера. Если вместо файла или родительской записи открывается отдельная страница вложения, поисковик тоже может её индексировать. Дополнительно проверьте robots.txt и мета-тег robots: иногда страница закрыта от индексации, но всё равно остаётся в выдаче как URL без контента.

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

Пошаговое решение

Вариант 1. Редирект attachment-страниц на родительскую запись или файл

Если у вложения есть родительская запись, логично отправлять пользователя туда. Если родителя нет, безопаснее вести на сам файл. Ниже рабочий вариант через template_redirect:

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

    global $post;

    if ( ! $post ) {
        return;
    }

    $parent_id = wp_get_post_parent_id( $post->ID );

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

Этот код лучше размещать в дочерней теме или в небольшом mu-plugin, а не в файле основной темы. Тогда редирект не сломается после обновления шаблона.

Вариант 2. Закрыть attachment-страницы от индексации через wp_robots

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

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

    return $robots;
} );

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

Вариант 3. Отключить attachment-страницы на уровне SEO-плагина

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

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

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

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

  • Проверьте URL вложения в режиме инкогнито.
  • Посмотрите ответ через curl -I https://example.com/attachment-url/.
  • Убедитесь, что в Search Console новые attachment-страницы не появляются как индексируемые.
  • Проверьте, не сломались ли ссылки на изображения в контенте и галереях.

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

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

Если всё сделано правильно, вы увидите либо 301 Moved Permanently с новым адресом, либо страницу без индексации, если выбран вариант с noindex.

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

Редирект уводит не туда

Такое бывает, если у вложения нет родителя, а код не обрабатывает пустой wp_get_post_parent_id(). В этом случае нужно явно проверять наличие $file_url и только потом отправлять на файл. Иначе пользователь может попасть на главную или на битую страницу.

Цикл редиректов

Если attachment-страница уже редиректится плагином, а вы добавили ещё один редирект в теме, можно получить петлю. Отключите один из механизмов и проверьте цепочку ответов через curl -I -L. Для таких задач важно, чтобы редирект был только в одном месте.

Страница закрыта от индексации, но всё ещё в выдаче

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

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

Редирект attachment-страниц не должен влиять на URL самих файлов в wp-content/uploads. Если после изменений картинки перестали открываться, проверьте, не перепутали ли вы permalink вложения и прямой URL файла. Это разные адреса, и редиректить нужно именно страницу вложения, а не сам файл.

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

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

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

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

Как отключить индексацию attachment-страниц в WordPress и убрать дубли из поиска
20.08.2026
Решение ошибки WP-Cron не запускается в WordPress
13.09.2026
Решение ошибки WP REST API 401 Unauthorized в WordPress
29.09.2026
Решение ошибки Headers Already Sent в WordPress
13.09.2026
Как запретить индексацию служебных разделов WordPress через robots.txt и meta robots
13.08.2026