На живых WordPress-сайтах проблема обычно выглядит одинаково: в индексе появляются страницы вложений, а в отчётах по сканированию — десятки или сотни URL вида /sample-image/, ?attachment_id= или архивы медиафайлов. Часть из них пустые, часть дублируют изображение без контента, а часть создаёт лишние точки входа для поисковиков. Если сайт давно работает, такие страницы часто тянутся из старых настроек темы, SEO-плагина или из-за того, что вложения не перенаправляются на файл или родительскую запись.
Ниже разберём не абстрактную «чистку медиа», а конкретный сценарий: как отключить attachment-страницы, не сломать загрузку изображений в редакторе и не потерять нормальные URL на сами файлы.
Как понять, что проблема именно во вложениях
Сначала стоит убедиться, что речь не о другом типе дублей. Вложение в WordPress — это отдельная запись типа attachment. У неё может быть собственный permalink, даже если файл лежит в /uploads/ и используется только как картинка в статье.
Типичные признаки
- В поиске находятся страницы с заголовками изображений, но без полезного текста.
- В Search Console растёт число URL, которые не нужны пользователю.
- На сайте есть страницы вида
/image-name/, где открывается только картинка или почти пустая страница. - SEO-плагин показывает индексируемые attachment-URL, хотя вы их не планировали.
Что проверить до изменений
- Есть ли у вложений собственные URL в текущей теме.
- Не используются ли attachment-страницы как галереи или страницы с описанием изображения.
- Не завязан ли на них какой-то старый редирект или внешняя ссылка.
- Не отключено ли уже индексирование через SEO-плагин, но без редиректа — это частая полумера.
Что именно нужно отключить: индексацию, страницы или сами файлы
Здесь важно не смешивать разные задачи. Отключить индексацию attachment-страниц — это одно. Отключить сами файлы в медиатеке — совсем другое. Обычно нужно первое: оставить загрузку изображений, но убрать отдельные страницы вложений из публичного обхода.
| Подход | Что делает | Компромисс |
|---|---|---|
| SEO-плагин | Закрывает attachment-страницы от индексации или ставит редирект | Зависит от плагина и его настроек |
| Код в теме/плагине | Перенаправляет attachment-URL на файл или родительскую запись | Нужно аккуратно поддерживать после смены темы |
| Удаление вложений | Физически удаляет медиафайлы и записи | Риск сломать контент, если файлы используются в статьях |
Пошаговое решение: перенаправить страницы вложений
Самый надёжный вариант для большинства сайтов — не оставлять attachment-страницы как отдельные URL. Если у вложения есть родительская запись, можно отправлять пользователя туда. Если родителя нет — на сам файл изображения или в медиатеку, в зависимости от логики сайта.
Вариант через код
Добавьте код в дочернюю тему или в небольшой mu-plugin. Это лучше, чем править functions.php основной темы, потому что при обновлении изменения не потеряются.
<?php
add_action( 'template_redirect', function () {
if ( ! is_attachment() ) {
return;
}
$attachment_id = get_queried_object_id();
$parent_id = wp_get_post_parent_id( $attachment_id );
if ( $parent_id ) {
wp_safe_redirect( get_permalink( $parent_id ), 301 );
exit;
}
$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;
} );
Логика простая: если вложение привязано к записи, уводим на запись. Если нет — на сам файл. Это не закрывает проблему индексации само по себе, но убирает бесполезную страницу как точку входа.
Вариант через SEO-плагин
Если у вас уже стоит SEO-плагин, проверьте, умеет ли он ставить редирект для attachment-страниц. Это удобнее для редакторов, но важно не путать редирект с noindex. Если страница просто закрыта от индексации, поисковик всё равно может её обходить и хранить в базе как URL без ценности.
Если вы используете Clearfy Pro, там есть инструменты для чистки сайта и отключения лишних сущностей. Но даже в этом случае я бы проверял результат вручную: иногда настройки конфликтуют с темой или другим SEO-модулем.
Блок диагностики: где ломается редирект
Если после внедрения код не срабатывает, обычно причина одна из нескольких.
- Код добавлен не туда. Вставка в шаблон страницы не поможет, нужен хук
template_redirectили отдельный плагин. - Тема уже делает свой редирект. Некоторые темы или SEO-плагины перехватывают attachment-URL раньше.
- Кэш отдаёт старую версию. После изменения нужно очистить кэш страницы, объекта и CDN, если он есть.
- Вложение открывается как файл, а не как страница. Тогда редирект должен быть на уровне WordPress-роутинга, а не шаблона.
Для быстрой проверки откройте URL вложения в режиме инкогнито и посмотрите HTTP-статус. Нужен 301 на целевой URL, а не 200 с пустой страницей.
Как проверить, что решение сработало
Проверка должна быть не только визуальной. Убедитесь, что WordPress действительно перестал отдавать attachment-страницы как отдельные документы.
- Откройте несколько URL вложений вручную.
- Проверьте статус ответа через DevTools,
curlили любой HTTP-checker. - Убедитесь, что редирект ведёт туда, куда вы задумали: на запись, файл или главную.
- Посмотрите отчёт сканирования в Search Console через несколько дней или недель, в зависимости от частоты обхода.
- Проверьте, не появились ли циклические редиректы для изображений, вставленных в контент.
curl -I https://example.com/sample-image/
В ответе должен быть 301 Moved Permanently и заголовок Location с целевым адресом. Если вместо этого приходит 200, значит редирект не сработал или его перехватывает другой слой.
Частые ошибки и как их исправить
Ставят noindex, но оставляют пустую страницу
Это не решает проблему полностью. URL остаётся доступным, а поисковик продолжает обходить его. Если страница не нужна пользователю, лучше делать редирект или отдавать 410 в редких случаях, когда URL точно не должен существовать.
Удаляют вложения из медиатеки без проверки использования
Если файл вставлен в десятки записей, удаление сломает изображения в контенте. Перед чисткой проверьте, где файл используется, и только потом удаляйте. Для массовой очистки лучше сначала экспортировать список вложений и проверить ссылки в базе.
Редиректят все вложения на главную
Это выглядит как быстрый фикс, но на практике создаёт плохой пользовательский опыт и может замаскировать ошибки структуры сайта. Если у вложения есть родитель, логичнее вести на родительскую запись.
Забывают про кэш и CDN
После правок старые attachment-страницы могут ещё долго отдаваться из кэша. Очистите серверный кэш, плагин кэширования и CDN, если он используется.
Безопасность и производительность: что учесть заранее
Если вы делаете решение кодом, не вставляйте его в случайный сниппет без контроля. Лучше оформить как маленький mu-plugin или отдельный функциональный плагин. Тогда логика не исчезнет при смене темы и не будет зависеть от визуального шаблона.
Ещё один практический момент: не создавайте лишние запросы к базе на каждом хите. В примере выше используется стандартная проверка is_attachment() и получение ID текущего объекта — этого достаточно, чтобы не усложнять обработку.
Когда лучше не трогать attachment-URL вручную
- Если сайт использует медиа-страницы как часть контентной стратегии.
- Если на вложения ведут внешние ссылки и их нельзя быстро обновить.
- Если уже есть настроенный SEO-модуль, который делает редиректы корректно и без конфликтов.
Если нужен более простой путь без кода
Для редакторов и владельцев сайтов без доступа к разработчику удобнее закрыть задачу через SEO-плагин или инструмент чистки сайта. Но даже в этом случае полезно понимать, что именно делает настройка: noindex, редирект или отключение страницы вложения как шаблона. Разница влияет на индексацию, обход и поведение старых ссылок.
Если вы используете Clearfy Pro, проверьте разделы, связанные с чисткой WordPress и отключением лишних сущностей. Это не отменяет ручную проверку статусов и редиректов, но помогает собрать настройки в одном месте.
После внедрения не ограничивайтесь одной проверкой в браузере. Сравните список URL в отчётах сканирования до и после, проверьте несколько старых вложений и убедитесь, что изображения в статьях продолжают открываться без ошибок. Если всё сделано аккуратно, сайт перестаёт плодить пустые страницы, а медиа-архив остаётся рабочим.