На WordPress страницы вложений часто живут своей жизнью: у изображения есть отдельный URL, он попадает в индекс, а в поиске начинает конкурировать с основной статьёй или страницей. Для небольшого сайта это обычно незаметно, но на контентных проектах и медиаархивах такие URL быстро превращаются в технический шум.
Проблема не в самих файлах изображений, а в том, что attachment-страница почти никогда не несёт самостоятельной ценности. Пользователь открывает пустую страницу с картинкой, а поисковик видит ещё один индексируемый URL. Ниже — рабочие способы убрать этот слой без поломки медиа и без потери нормальных ссылок на изображения.
Когда attachment-страницы действительно мешают
Сначала стоит понять, что именно у вас индексируется. В WordPress у каждого загруженного файла может быть attachment page вида /image-name/ или похожий URL, если тема и настройки это позволяют. Такие страницы часто появляются в индексе после массовой загрузки изображений, импорта контента или при активной внутренней перелинковке на медиафайлы.
Типичные признаки проблемы
- в Google Search Console есть URL с типом
attachmentили страницами вложений; - в поиске находятся страницы с одной картинкой и почти без текста;
- в выдаче всплывают дубли медиа-контента вместо основной статьи;
- внутренние ссылки ведут не на запись, а на attachment URL;
- плагин SEO показывает, что страницы вложений доступны для индексации.
Что важно не перепутать
Закрывать от индексации нужно именно attachment-страницы, а не сами файлы изображений. Сам файл .jpg, .png или .webp должен оставаться доступным для браузера и CDN. Если случайно закрыть каталог с медиа через robots.txt или серверные правила, можно сломать картинки на сайте и ухудшить рендеринг страниц.
Диагностика: как проверить, что у вас есть проблема
Перед правкой полезно посмотреть, как WordPress отдаёт attachment URL. Откройте несколько изображений из медиабиблиотеки и проверьте, есть ли у них отдельная страница вложения. Если тема или плагин SEO не меняли поведение, обычно attachment page открывается как обычная запись с минимальным шаблоном.
Быстрая проверка через админку:
- Откройте Медиафайлы → Библиотека.
- Выберите изображение и посмотрите ссылку на страницу вложения.
- Откройте её в браузере и проверьте, есть ли там контент, кроме картинки и стандартной оболочки темы.
- Проверьте исходный код страницы на наличие
meta robotsи canonical.
Если у вас есть доступ к консоли поиска, дополнительно проверьте отчёт по страницам, исключённым из индекса, и по страницам, проиндексированным с пометкой «дубликат» или «альтернативная страница с правильным каноническим тегом». Это не всегда означает ошибку, но помогает понять масштаб.
Как закрыть attachment-страницы: рабочие варианты
Есть три нормальных подхода: отключить attachment-страницы на уровне SEO-плагина, поставить редирект на родительскую запись или файл, либо добавить код в тему/мини-плагин. Выбор зависит от того, как у вас устроены ссылки и нужен ли вообще отдельный URL для вложения.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если уже используете плагин с настройками для медиа | Быстро, без кода | Не всегда даёт полный контроль над редиректом |
| Код в теме/плагине | Если нужен предсказуемый редирект | Контроль логики, без лишних зависимостей | Нужно аккуратно тестировать |
| Только noindex | Если нельзя менять URL прямо сейчас | Минимальное вмешательство | URL остаётся доступным и может продолжать обходиться |
Вариант 1. Редирект attachment-страниц на родительскую запись
Если у изображения есть родительская запись, логично отправлять пользователя туда. Если родителя нет, можно вести на сам файл или на главную страницу медиа-логики сайта. Для большинства проектов безопаснее редиректить attachment page на родительский пост, а если его нет — на сам файл.
<?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;
});
Этот код лучше размещать не в functions.php активной темы, а в небольшом mu-plugin или собственном плагине. Так он не пропадёт после смены темы.
Вариант 2. Поставить noindex для attachment-страниц
Если вам нужно оставить страницу доступной, но убрать её из индекса, добавьте noindex, follow. Это мягче, чем редирект, но не решает проблему дублей так хорошо. Подходит как временная мера или если attachment URL уже где-то используется и вы не хотите ломать внешние ссылки.
<?php
add_filter('wp_robots', function (array $robots) {
if (is_attachment()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});
После этого проверьте исходный код attachment-страницы: в блоке robots должен появиться noindex. Если у вас установлен SEO-плагин, он может переопределять этот вывод своими настройками.
Вариант 3. Использовать настройки SEO-плагина
Если на сайте уже стоит плагин для SEO, сначала проверьте его настройки для медиа и архивов вложений. Во многих случаях там есть опция отключения attachment pages или автоматического редиректа на файл/родителя. Это удобнее, чем писать код, если проект ведётся не разработчиком, а редактором.
Но есть важный нюанс: не все плагины одинаково обрабатывают attachment URL. После изменения настройки обязательно проверьте фактический HTTP-ответ, а не только чекбокс в админке.
Пошаговое решение без лишнего риска
- Сделайте резервную копию базы и файлов, если на сайте уже много медиа и внешних ссылок.
- Определите, нужны ли attachment-страницы вообще. В большинстве проектов — нет.
- Выберите один способ: редирект или noindex. Не смешивайте сразу несколько механизмов без необходимости.
- Добавьте код в mu-plugin или настройте SEO-плагин.
- Очистите кеш сайта, сервера и CDN, если он есть.
- Проверьте несколько attachment URL вручную и через инструменты для проверки ответа сервера.
Как проверить, что решение сработало
После внедрения важно не ограничиваться визуальной проверкой. Нужно убедиться, что сервер отдаёт именно тот ответ, который вы ожидали.
- Откройте attachment URL в браузере: при редиректе он должен уводить на родителя или файл.
- Проверьте HTTP-статус: для редиректа должен быть
301, а не200. - Посмотрите исходный код страницы, если используете
noindex. - В Search Console отправьте URL на повторную проверку после обновления.
- Проверьте, не остались ли внутренние ссылки на attachment page в контенте и шаблонах.
Для быстрой проверки статуса удобно использовать curl:
curl -I https://example.com/sample-image/Если редирект настроен правильно, в ответе будет 301 и заголовок Location с новым адресом.
Частые ошибки и как их исправить
Закрыли не страницу, а сами файлы
Это самая неприятная ошибка. Если в robots.txt или серверных правилах запретить доступ к каталогу загрузок, изображения перестанут нормально индексироваться и могут не загружаться в шаблонах. Исправление простое: не трогайте сами файлы медиа, работайте только с attachment URL.
Сделали редирект на главную для всех вложений
Такой вариант выглядит безопасным, но на практике он часто ухудшает UX и мешает понять, куда ведёт конкретное изображение. Лучше редиректить на родительскую запись, а если её нет — на сам файл. Главную страницу используйте только как запасной вариант.
Поставили noindex, но URL всё равно остаются в индексе
Это нормально на коротком отрезке времени: поисковику нужно переобойти страницы. Если attachment URL активно связаны внутренними ссылками, процесс затянется. В таком случае лучше заменить noindex на редирект и убрать ссылки на вложения из контента.
Код добавили в тему, а потом потеряли после обновления
Для таких задач лучше использовать mu-plugin или собственный мини-плагин. Тогда логика не зависит от обновления темы и не исчезнет при смене шаблона.
Что ещё стоит поправить рядом с этой задачей
Если attachment-страницы уже полезли в индекс, обычно рядом есть ещё несколько технических недочётов: дубли архивов, лишние страницы автора, автоматические ссылки на медиа в контенте. Имеет смысл проверить, не создаёт ли тема отдельные страницы для файлов, не дублируются ли изображения через разные размеры и не ведут ли карты сайта на технические URL.
Для проектов, где много контента и медиа, полезно держать под контролем не только индексацию, но и чистоту шаблонов. Если на сайте уже накопились технические дубли, инструменты вроде Clearfy Pro могут помочь с частью типовых настроек, но перед включением любой автоматизации всё равно стоит проверить, что именно она меняет в вашей установке.
Мини-чек-лист перед публикацией изменений
- attachment page открывается и ведёт туда, куда нужно;
- HTTP-статус соответствует выбранной логике;
- в исходном коде есть или нет
noindex— в зависимости от сценария; - ссылки на изображения в статьях не сломались;
- кеш очищен на всех уровнях;
- в Search Console нет массовых ошибок после изменения.
Если задача стоит именно в технической чистке сайта, а не в косметическом скрытии URL, лучше не ограничиваться одним noindex. Редирект attachment-страниц обычно даёт более предсказуемый результат и быстрее убирает мусорные адреса из обхода поисковиков.