Attachment-страницы в WordPress часто остаются незаметными до тех пор, пока в индексе не появляются тонкие страницы без контента, дубли заголовков и лишние URL из медиафайлов. На небольшом сайте это выглядит как косметическая проблема, но на контентном проекте такие страницы могут размывать релевантность и создавать шум в отчётах по индексации.
Ниже разберём, как понять, что проблема именно в attachment-страницах, чем отличается noindex от редиректа, и как внедрить решение без поломки медиа-ссылок в теме и редакторе.
Когда attachment-страницы становятся проблемой
В WordPress у каждого загруженного файла может быть собственная attachment-страница. Если тема или плагин выводят ссылку не на сам файл, а на страницу вложения, поисковик получает ещё один URL с почти пустым содержимым. Это особенно заметно, если:
- в поиске появляются страницы вида
/attachment/или URL с названием файла; - в Search Console растёт число проиндексированных URL без полезного контента;
- в выдаче встречаются дубли заголовков и описаний, совпадающие с записью-источником;
- медиафайлы используются в галереях, а страницы вложений не закрыты от индексации.
Важно не путать две задачи: убрать страницу из поиска и сохранить сам файл доступным по прямой ссылке. Это разные вещи, и решаются они по-разному.
Диагностика: как понять, что индексируются именно attachment-страницы
Проверка занимает несколько минут и не требует доступа к серверу. Сначала откройте поиск по сайту в Google с оператором site:example.com attachment или просто site:example.com inurl:attachment. Если в выдаче есть страницы вложений, значит они уже попали в индекс.
Дальше проверьте исходный код такой страницы. Если в <head> нет noindex, а canonical указывает на саму attachment-страницу, поисковик получает сигнал считать её самостоятельной страницей. Это и есть типичный источник дублей.
Что смотреть в первую очередь
- мета-тег
robotsна attachment-странице; rel="canonical";- редирект с attachment URL на исходную запись или медиафайл;
- настройки SEO-плагина, если он управляет индексированием архивов и медиа;
- поведение темы: не все шаблоны одинаково обрабатывают страницы вложений.
Как отключить индексацию: три рабочих подхода
Выбор зависит от того, как у вас устроены ссылки на изображения и нужен ли вообще отдельный просмотр attachment-страниц. На практике чаще всего используют один из трёх вариантов: noindex, редирект или полное отключение attachment-шаблона.
| Подход | Что делает | Когда подходит | Компромисс |
|---|---|---|---|
noindex | Страница остаётся доступной, но не должна индексироваться | Если attachment-страницы нужны пользователю | URL остаётся в обходе, но не в выдаче |
| Редирект на файл или запись | Уводит пользователя и робота с attachment URL | Если отдельная страница вложения не нужна | Нужно аккуратно выбрать цель редиректа |
| Отключение через код | Меняет поведение WordPress на уровне шаблона/хуков | Если нужен контролируемый вариант без плагина | Требует проверки темы и тестирования |
Вариант 1: закрыть attachment-страницы от индексации через SEO-плагин
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Во многих случаях проще и безопаснее поставить noindex для медиа-страниц, чем писать свой код. Это не ломает прямые ссылки на файлы и не требует вмешательства в шаблоны.
Если плагин позволяет управлять архивами вложений или медиа-страницами, включите noindex именно для них. После этого проверьте исходный код attachment-страницы: в meta robots должен появиться запрет на индексацию.
Вариант 2: редирект attachment-страниц на файл или родительскую запись
Если отдельная страница вложения не нужна вообще, практичнее сделать редирект. Для изображений это обычно уводит на сам файл, а для вложений, привязанных к записи, — на родительский пост. Такой подход уменьшает количество бесполезных URL в обходе и в индексе.
Ниже пример для functions.php дочерней темы или небольшого mu-plugin. Он редиректит attachment-страницы на родительскую запись, если она есть, иначе — на сам файл вложения.
<?php
add_action( 'template_redirect', function () {
if ( ! is_attachment() ) {
return;
}
$post = get_post();
if ( ! $post ) {
return;
}
$redirect_url = '';
if ( $post->post_parent ) {
$redirect_url = get_permalink( $post->post_parent );
} else {
$file_url = wp_get_attachment_url( $post->ID );
if ( $file_url ) {
$redirect_url = $file_url;
}
}
if ( $redirect_url ) {
wp_safe_redirect( $redirect_url, 301 );
exit;
}
} );Этот вариант хорош тем, что не требует отдельной страницы вложения и обычно лучше для SEO, чем оставлять пустой шаблон. Но перед включением проверьте, не используются ли attachment-страницы где-то в старых ссылках внутри контента.
Вариант 3: добавить noindex программно
Если редирект вам не подходит, можно оставить страницу доступной и только запретить индексацию. Это полезно, когда attachment-страницы нужны для внутренней навигации или их уже использует тема.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_attachment() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Этот способ не убирает URL из обхода сразу, но снижает риск попадания страницы в поиск. Если attachment-страницы уже в индексе, обычно требуется время на переобход и переоценку страницы поисковиком.
Пошаговая настройка без лишних рисков
- Сначала определите, нужен ли attachment-URL пользователю. Если нет — выбирайте редирект.
- Если на сайте уже есть SEO-плагин, проверьте, не управляет ли он robots-мета и canonical для медиа.
- Сделайте резервную копию файлов темы или вынесите код в отдельный mu-plugin.
- Внедрите
noindexили редирект только для attachment-страниц, не трогая сами медиафайлы. - Проверьте несколько URL вручную: обычное изображение, вложение с родителем и вложение без родителя.
- После обновления sitemap и переобхода проверьте Search Console и индекс по оператору
site:.
Как проверить, что решение сработало
Проверка должна быть не только визуальной. Откройте attachment-страницу и убедитесь, что:
- при редиректе URL отдаёт
301и ведёт на нужную цель; - при
noindexв исходном коде есть соответствующий robots-сигнал; - canonical не указывает на саму бесполезную attachment-страницу, если вы хотите её исключить;
- в выдаче по
site:example.com inurl:attachmentновые страницы больше не появляются; - в отчётах Search Console уменьшается число URL с низкой ценностью или дублирующихся страниц, если они были связаны именно с медиа.
Если вы используете кэш-плагин, очистите кэш после изменений. Иначе можно проверить старую версию страницы и сделать ложный вывод, что настройка не сработала.
Частые ошибки и как их исправить
Редирект на главную страницу без логики
Это частая ошибка в старых темах и самописных сниппетах. На первый взгляд проблема решается, но на практике вы теряете контекст и создаёте лишние переходы. Лучше редиректить на родительскую запись или на сам файл, если это оправдано.
Закрыли только robots.txt
Disallow в robots.txt не равен noindex. Если страница уже в индексе, запрет на обход не гарантирует её удаление. Для удаления из поиска нужен именно сигнал на уровне страницы или редирект.
Сломали ссылки на изображения в контенте
Иногда после агрессивной настройки начинают редиректить не только attachment-страницы, но и прямые URL файлов. Это уже ошибка: изображения в статьях должны открываться по прямому адресу, если их на него ссылаются. Проверяйте, что условие срабатывает только для is_attachment(), а не для всех медиа URL подряд.
Не учли кэш и CDN
Если на сайте стоит кэширование страниц или CDN, старые заголовки и HTML могут сохраняться дольше, чем вы ожидаете. После внедрения изменений очистите серверный кэш, кэш плагина и, если нужно, CDN.
Если нужен более чистый сайт: что ещё проверить рядом
Когда вы уже разбираете attachment-страницы, имеет смысл посмотреть и на другие источники дублей: архивы автора на маленьких сайтах, тонкие теги, страницы поиска по сайту и устаревшие медиа-URL из старых публикаций. Если задача шире, чем одна настройка, удобно использовать инструменты для очистки служебных страниц и дублей. Например, Clearfy Pro уместен именно как набор точечных SEO- и технических настроек, когда не хочется собирать всё вручную: https://wpshop.ru/plugins/clearfy.
Но даже с плагином логика проверки остаётся той же: сначала смотрим, что именно индексируется, потом меняем поведение страницы, и только после этого проверяем результат в поиске и в коде страницы.