Attachment-страницы в WordPress часто остаются незаметными до тех пор, пока в индексе не появляются лишние URL с тонким контентом. Это типичный источник дублей: у изображения есть отдельная страница вложения, но на ней почти нет полезного текста, а поисковик может считать её самостоятельной страницей. Если сайт давно живёт, такие URL обычно уже успевают попасть в sitemap, внутренние ссылки или отчёты краулинга.
Задача здесь не в том, чтобы «удалить всё подряд», а в том, чтобы понять, какие attachment-страницы реально мешают, и безопасно перевести их на вложение файла или закрыть от индексации. Ниже — рабочий сценарий без выдуманных хуков и без ломки медиа-библиотеки.
Как понять, что проблема именно в attachment-страницах
Сначала проверьте, есть ли у сайта отдельные URL вида /attachment/, /image-name/ или похожие страницы вложений. В WordPress это зависит от темы и настроек постоянных ссылок, но логика одна: у медиафайла есть не только сам файл, но и страница-обёртка записи attachment.
Что смотреть в первую очередь
- отчёт краулинга: много URL с маленьким объёмом текста и одинаковыми заголовками;
- Google Search Console: страницы с низким качеством или дублированными мета-данными;
- внутренние ссылки из записей и страниц на attachment-URL;
- sitemap.xml: попадают ли туда страницы вложений;
- результат поиска по сайту: открываются ли attachment-страницы как отдельные документы.
Если на attachment-странице нет уникального описания, а есть только картинка и стандартный шаблон, это почти всегда кандидат на отключение индексации или редирект на сам файл.
Какие есть варианты решения и чем они отличаются
В WordPress есть три практических подхода: редирект attachment-страниц на файл, закрытие от индексации, либо полное отключение таких URL через код. Выбор зависит от того, используются ли эти страницы где-то в интерфейсе и нужны ли они вам вообще.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Редирект на файл | Attachment-страницы не нужны | Убирает дубль из обхода, пользователь сразу видит файл | Нужно проверить, что не ломаются старые ссылки |
| noindex | Страница нужна для интерфейса, но не для поиска | Мягкий вариант без удаления URL | Страница остаётся доступной для обхода |
| Отключение attachment-страниц | Если они нигде не используются | Самый чистый вариант | Нужен аккуратный редирект, чтобы не получить 404 |
Пошаговое решение: редирект attachment-страниц на файл
Если attachment-страницы не несут ценности, самый практичный вариант — отправлять их на сам медиафайл. Это уменьшает количество дублей и не оставляет поисковику лишний URL.
<?php
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$file_url = wp_get_attachment_url( get_queried_object_id() );
if ( $file_url ) {
wp_redirect( $file_url, 301 );
exit;
}
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Код можно добавить в дочернюю тему или в собственный небольшой плагин. Важно не вставлять его в активную тему без резервной копии: при обновлении темы правило потеряется.
Когда этот вариант не подходит
Если attachment-страницы уже используются в старых ссылках из внешних источников или в каком-то кастомном шаблоне, редирект нужно тестировать отдельно. Иначе можно получить неожиданные переходы на файлы без контекста. В таком случае лучше сначала поставить noindex и посмотреть, как ведёт себя индекс.
Как закрыть attachment-страницы от индексации без удаления URL
Если вам нужно оставить страницу вложения доступной, но не показывать её в поиске, используйте noindex. Это полезно, когда на attachment-странице есть навигация по галерее или она нужна для внутреннего UX, но как отдельная SEO-страница она бесполезна.
Ниже пример, который добавляет noindex,follow только для attachment-страниц:
<?php
add_filter( 'wp_robots', function ( array $robots ) {
if ( is_attachment() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант не удаляет URL из сайта, но даёт поисковику понятный сигнал. Если у вас уже подключён SEO-плагин, проверьте, не переопределяет ли он robots-мета на уровне шаблона или настроек.
Как полностью отключить attachment-страницы через код
Если медиа-страницы не используются вообще, можно сразу перенаправлять их на файл или на главную страницу. Это особенно полезно на старых сайтах, где attachment-архивы накопились годами и только мешают.
<?php
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$attachment_id = get_queried_object_id();
$file_url = wp_get_attachment_url( $attachment_id );
if ( $file_url ) {
wp_safe_redirect( $file_url, 301 );
exit;
}
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
} );Здесь лучше использовать wp_safe_redirect(), если редирект ведёт на внутренний URL. Для прямой ссылки на файл тоже обычно достаточно, но безопаснее держать логику предсказуемой и не смешивать её с внешними адресами.
Проверка результата после внедрения
После изменений не ограничивайтесь открытием пары URL в браузере. Проверьте несколько уровней сразу:
- открывается ли attachment-URL и уходит ли он в 301;
- не осталось ли страниц вложений в sitemap;
- не появились ли цепочки редиректов;
- не сломались ли ссылки из медиа-библиотеки и контентных блоков;
- как отвечает сервер на старые attachment-адреса через
curl -Iили аналогичный инструмент.
Пример проверки заголовков:
curl -I https://example.com/sample-image/В ответе вы должны увидеть либо 301 на файл, либо 200 с noindex, если вы выбрали мягкий вариант. Если вместо этого получаете 404, значит редирект не сработал или URL уже не существует в базе.
Частые ошибки и как их исправить
Редирект поставили, но attachment-страницы всё равно индексируются
Чаще всего причина в том, что поисковик ещё не переобошёл старые URL, либо на сайте остались внутренние ссылки на attachment-страницы. Проверьте контент, меню, блоки и шаблоны, где могли сохраниться старые адреса.
Сломались изображения в галереях
Это бывает, если редирект настроен не на страницу вложения, а на сам файл, который по какой-то причине недоступен. Сначала убедитесь, что wp_get_attachment_url() возвращает корректный адрес. Если файл удалён, редирект на главную — плохая замена, лучше восстановить медиа или убрать битые ссылки из контента.
SEO-плагин перезаписывает robots-мета
Если у вас уже стоит плагин для SEO, он может задавать свои правила для attachment-страниц. Тогда код из темы будет работать не так, как ожидается. Проверьте настройки индексации медиа-страниц в самом плагине и не дублируйте логику в двух местах.
Появились цепочки редиректов
Иногда attachment-страница сначала ведёт на промежуточный URL, а потом уже на файл. Это лишняя нагрузка и плохой сигнал для обхода. Цель — один редирект, без промежуточных переходов.
Чек-лист перед выкладкой на прод
- сделан бэкап файлов и базы;
- проверено, используются ли attachment-страницы в шаблонах;
- выбран один вариант: редирект, noindex или отключение;
- проверены старые URL из Search Console и логов;
- исключены цепочки редиректов;
- проверен sitemap и robots-мета;
- протестированы несколько реальных медиа-URL из разных типов записей.
Что делать, если нужен более чистый технический контур
Если на сайте одновременно есть дубли архивов, attachment-страницы и мусорные URL от медиа, имеет смысл сначала навести порядок в индексации, а уже потом заниматься контентом. Для таких задач часто удобнее использовать связку ручной настройки и плагина уровня Clearfy Pro, если нужен контроль над дублями, служебными страницами и базовой технической чисткой. Но даже с плагином полезно понимать, какой именно URL вы закрываете и зачем — иначе легко отключить не то, что нужно.
Главная проверка простая: attachment-страница должна либо корректно уводить пользователя на файл, либо быть закрыта от индексации, либо не существовать как отдельный SEO-объект. Если после правки в индексе остаются старые URL, это не всегда ошибка кода — иногда поисковику просто нужно время на переобход и обновление сигналов.