Attachment-страницы в WordPress часто всплывают в индексе как отдельные URL с почти пустым содержимым. На небольшом сайте это выглядит как мусор в отчётах, а на контентном проекте — как источник дублей и лишних страниц в обходе. Проблема обычно не в самих медиафайлах, а в том, что WordPress создаёт для них отдельные страницы вложений, и поисковик может считать их самостоятельными документами.
Если у вас уже есть статьи про закрытие архивов, фильтров и параметров, attachment-страницы — это отдельный сценарий. Здесь задача не просто поставить noindex, а убрать лишние URL из обхода и не сломать переходы из старых материалов и картинок.
Когда attachment-страницы становятся проблемой
Типичный симптом — в Search Console или Яндекс.Вебмастере появляются URL вида /sample-image/, /photo-name/ или вложения с тонким контентом. Часто на такой странице есть только заголовок, изображение и ссылка на файл. Для пользователя это бесполезно, для индекса — слабый дубль.
Проверить проблему можно быстро:
- откройте несколько URL вложений вручную и посмотрите, есть ли там полноценный текст;
- проверьте исходный код на наличие
meta robotsи канонического URL; - посмотрите, не попадают ли attachment-страницы в sitemap;
- сравните число проиндексированных URL с количеством реальных записей и страниц.
Если вложения уже индексируются, одной правки в robots.txt обычно недостаточно. Поисковик может продолжать держать старые URL в индексе, пока не увидит явный сигнал: редирект, noindex или удаление страницы.
Что лучше сделать: редирект, noindex или оставить как есть
Для большинства сайтов attachment-страницы не нужны вообще. Самый практичный вариант — перенаправлять их на сам файл вложения или на родительскую запись, если она есть. Но выбор зависит от того, как у вас устроена медиатека и используются ли отдельные страницы вложений в теме.
| Подход | Когда подходит | Минус |
|---|---|---|
| Редирект 301 | Attachment-страницы не нужны, нужен чистый индекс | Нужно аккуратно проверить родительские URL |
noindex | Нужно оставить страницу доступной, но убрать из поиска | URL может ещё какое-то время жить в индексе |
| Оставить как есть | Редкий случай, когда вложение — полноценная посадочная страница | Риск дублей и слабого контента |
Если у вас нет явной бизнес-задачи держать attachment-страницы в поиске, редирект обычно надёжнее. Он сразу убирает лишний URL из пользовательского сценария и помогает поисковику быстрее понять, что страница больше не нужна.
Пошаговое решение через код
Самый предсказуемый способ — добавить редирект для attachment-страниц в тему или в небольшой mu-plugin. Так вы не зависите от настроек темы и не ждёте, пока плагин обновится.
1. Перенаправить attachment-страницы
Ниже пример, который отправляет attachment-страницу на URL родительской записи, если она есть. Если родителя нет, лучше вести на сам файл или на главную медиатеки — в зависимости от логики сайта.
<?php
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;
}
$file_url = wp_get_attachment_url( get_queried_object_id() );
if ( $file_url ) {
wp_safe_redirect( $file_url, 301 );
exit;
}
wp_safe_redirect( home_url( '/' ), 301 );
exit;
} );Этот вариант работает без выдуманных хуков и не требует сторонних библиотек. Важно не использовать wp_redirect() без проверки URL, если есть риск подмены адреса. Для внутреннего редиректа wp_safe_redirect() безопаснее.
2. Добавить noindex как запасной вариант
Если по какой-то причине редирект не подходит, можно закрыть attachment-страницы от индексации через robots meta. Это не заменяет редирект, но помогает, если вы хотите сохранить страницу доступной для просмотра.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_attachment() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Такой способ корректно работает в современных версиях WordPress, где robots meta формируется через фильтр wp_robots. Если у вас уже стоит SEO-плагин, проверьте, не переопределяет ли он этот вывод своими настройками.
3. Убрать attachment-URL из sitemap, если они туда попали
В стандартном WordPress attachment-страницы обычно не являются основным типом контента для sitemap, но некоторые темы и плагины могут добавлять их отдельно. Если это ваш случай, проверьте настройки sitemap в SEO-плагине и исключите вложения из генерации карты сайта.
Если sitemap собирается кодом, ориентируйтесь на логику исключения пост-типов, а не на ручное удаление URL из XML. Иначе после следующей генерации проблема вернётся.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой в браузере. Нужны конкретные признаки, что URL действительно перестал быть проблемным для обхода и индексации.
- откройте несколько attachment-страниц и убедитесь, что они редиректят с кодом 301;
- проверьте заголовки ответа через DevTools или
curl -I https://site.ru/attachment-url/; - посмотрите исходный код страницы, если вы оставили
noindex, и убедитесь, что мета-тег есть; - в Search Console отправьте проверку URL и посмотрите, как робот видит страницу;
- через пару обходов проверьте, уменьшается ли число attachment-URL в отчётах по индексации.
Пример проверки через командную строку:
curl -I https://example.com/sample-attachment/В ответе вы должны увидеть либо 301 Moved Permanently с новым адресом, либо страницу с корректным noindex, если редирект не используется. Если код ответа остаётся 200 и страница доступна как отдельный документ, значит правило не сработало или его перебивает тема/плагин.
Частые ошибки и как их исправить
Редирект ведёт не туда
Это случается, если у вложения нет родителя, а код безусловно отправляет пользователя на несуществующую запись. Решение простое: сначала проверяйте wp_get_post_parent_id(), а потом уже выбирайте целевой URL. Если родителя нет, используйте файл вложения или главную страницу.
Attachment-страницы всё ещё в индексе
Одна только правка кода не удаляет URL мгновенно. Поисковику нужно переобойти страницу и увидеть новый сигнал. Если URL уже был в индексе, процесс занимает время. Ускорить его можно через переобход в панели вебмастера и через внутренние ссылки: уберите ссылки на attachment-страницы из шаблонов и контента.
SEO-плагин перезаписывает robots meta
Если у вас включены настройки индексации в SEO-плагине, он может генерировать собственный noindex или каноникал. В таком случае проверьте, где именно формируется мета-тег, и не дублируйте правила в двух местах. Два разных источника часто дают конфликтующий результат.
Редирект ломает изображения в старых записях
Иногда путают attachment-страницу и сам файл изображения. Редирект должен срабатывать именно на страницу вложения, а не на файл в /uploads/. Если после правки перестали открываться сами картинки, значит правило слишком широкое и затронуло не тот URL.
Что учесть для безопасности и производительности
Для таких задач лучше не плодить отдельные плагины, если достаточно нескольких строк в mu-plugin. Это снижает риск конфликта после обновления темы и упрощает контроль кода. Если вы всё же используете плагин для SEO, держите правило в одном месте: либо в плагине, либо в коде темы, но не в обоих сразу.
Ещё один практический момент — не делайте массовые редиректы на главную без разбора. Для пользователя это выглядит как мягкая ошибка, а для поисковика может быть сигналом о плохой структуре сайта. Лучше отправлять вложение туда, где оно реально использовалось: на родительскую запись или на сам файл.
Если на сайте много старых медиафайлов, после настройки редиректов проверьте логи 404 и отчёты обхода. Иногда всплывают ссылки на удалённые вложения из старых материалов, и их тоже стоит закрыть отдельным редиректом или обновлением контента.
В проектах, где нужно одновременно чистить дубли, управлять индексацией и не лезть в код каждый раз вручную, удобно использовать инструменты уровня Clearfy Pro: он закрывает часть типовых SEO-задач и помогает не держать лишние URL в индексе. Но даже с плагином полезно понимать, какой именно механизм вы включили — редирект, noindex или исключение из sitemap.
Короткий чек-лист перед публикацией правок
- Проверить, есть ли attachment-страницы в индексе.
- Выбрать один основной способ: 301-редирект или
noindex. - Убедиться, что редирект не затрагивает файлы в
/uploads/. - Проверить robots meta и canonical на странице вложения.
- Исключить attachment-URL из sitemap, если они туда попали.
- Прогнать несколько URL через
curl -Iи браузер. - Отправить проблемные URL на переобход в вебмастере.
Если после этого attachment-страницы перестали открываться как отдельные документы, а в отчётах вебмастеров больше не растёт число мусорных URL, значит задача решена правильно. Если нет — почти всегда проблема в том, что редирект или meta robots добавлены не на том уровне: тема, SEO-плагин и кастомный код конфликтуют между собой.