Отдельные страницы вложений в WordPress часто живут своей жизнью: у изображения есть URL, на него можно попасть из поиска, а сам архив почти всегда пустой или дублирует материал из записи. Для SEO это лишний мусор в индексе, а для сайта — еще один тип страниц, который нужно поддерживать и проверять.
Ниже — рабочий сценарий: как отключить attachment-archive, когда это действительно нужно, чем отличается редирект от noindex, и как убедиться, что изображения в контенте при этом не пострадали.
Когда attachment-страницы становятся проблемой
В WordPress у каждого медиафайла есть attachment page. Если тема или плагины не вмешиваются, такие страницы могут индексироваться отдельно от записи. На практике это дает несколько типичных проблем:
- в индексе появляются тонкие страницы без полезного контента;
- поиск может вести на attachment URL вместо основной записи;
- в отчетах Search Console растет число «слабых» URL;
- при смене темы или плагина медиа-архивы начинают вести себя по-разному.
Если на attachment-странице нет уникального текста, хлебных крошек, контекста и она не нужна как посадочная, обычно проще убрать ее из публичного обхода и отправлять на вложенный файл или родительскую запись.
Диагностика: что именно у вас сейчас открыто
Перед правкой полезно понять, как сайт отдает attachment URL. Откройте несколько адресов вида /sample-image/ или ?attachment_id=123 и проверьте:
- открывается ли отдельная HTML-страница;
- есть ли canonical на саму attachment-страницу;
- ведет ли она на файл изображения или на запись;
- не закрыта ли она уже плагином SEO или темой.
Если у вас установлен SEO-плагин, сначала проверьте его настройки. Иногда attachment pages уже закрыты, но редирект не настроен, и тогда URL все равно доступны напрямую. Это важно: noindex и редирект решают разные задачи.
Что выбрать: noindex или редирект
| Подход | Что делает | Когда подходит | Минус |
|---|---|---|---|
| noindex | Страница может открываться, но не должна попадать в индекс | Если URL нужен для редких сценариев и не мешает | Страница остается доступной, мусор в обходе не исчезает полностью |
| Редирект на файл или запись | Пользователь и бот уходят на другой URL | Если attachment page не нужна вообще | Нужно аккуратно выбрать цель редиректа |
| Полное отключение шаблона | Attachment URL не отдается как отдельная страница | Если хотите убрать тип страниц на уровне кода | Нужно проверить совместимость с темой и плагинами |
Пошаговое решение через код
Самый предсказуемый вариант — отправлять attachment page на родительскую запись, а если родителя нет, на сам файл. Это можно сделать в functions.php дочерней темы или в небольшом mu-plugin.
<?php
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$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;
}
}
} );Что делает этот код:
- ловит запросы к attachment page;
- если у вложения есть родитель, отправляет на запись;
- если родителя нет, отправляет на сам файл;
- использует
301, чтобы поисковики и браузеры запомнили новый маршрут.
Если вам не нужен редирект, а достаточно убрать страницу из индекса, можно добавить noindex для attachment-страниц. Это слабее, но иногда удобнее, если URL уже где-то используются.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_attachment() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Этот вариант не убирает страницу из обхода, но снижает шанс ее индексации. Для чистки выдачи обычно лучше редирект.
Если хотите отключить attachment pages через плагин
Когда на сайте уже есть SEO-плагин, иногда проще использовать его настройки, чем писать свой код. Но здесь важно не смешивать инструменты: если плагин ставит noindex, а тема делает редирект, потом сложно понять, что именно сработало.
Хорошая практика — выбрать один основной механизм:
- если нужен быстрый и понятный результат — редирект;
- если есть риск сломать старые ссылки — сначала noindex, потом редирект;
- если сайт большой и медиа-URL уже в индексе — сначала проверить логи и Search Console.
Если вы используете Clearfy Pro, у него есть инструменты для чистки сайта и удаления дублей, но даже в этом случае полезно понимать, какой именно тип URL вы закрываете и куда они должны вести. Автоматическая настройка без проверки часто дает неожиданные редиректы на главную или на вложение без контекста.
Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что сервер отдает нужный код ответа и что поисковый робот видит именно то, что вы задумали.
- Откройте attachment URL в режиме инкогнито.
- Проверьте, что происходит редирект на родительскую запись или файл.
- Посмотрите код ответа через DevTools или
curl. - Проверьте, не осталось ли canonical на старый attachment URL.
- В Search Console отправьте проверку URL, если страница уже была в индексе.
Пример проверки через консоль:
curl -I https://example.com/sample-image/В ответе вы должны увидеть либо 301 Moved Permanently, либо другой ожидаемый статус. Если вместо этого отдается 200 OK, значит редирект не сработал или его перехватывает другой плагин.
Частые ошибки и как их исправить
Редирект ведет на главную
Такое бывает, если код написан слишком грубо и не проверяет родителя вложения. Для медиа без родителя лучше отправлять на сам файл, а не на главную. Иначе вы получите цепочки редиректов и потерю контекста.
Страница осталась в индексе после noindex
Это нормально на короткой дистанции. Поисковику нужно время, чтобы переобойти URL. Если страница уже давно в индексе, лучше сочетать noindex с редиректом и проверить, что на странице нет внутренней ссылки на старый attachment URL.
Сломались изображения в контенте
Обычно проблема не в редиректе, а в том, что тема или редактор вставляли не файл, а attachment page как ссылку. Проверьте блоки в редакторе и шаблоны темы: изображение должно вести либо на файл, либо никуда, если это декоративный элемент.
Появились цепочки редиректов
Если SEO-плагин уже редиректит attachment URL, а вы добавили свой код сверху, может получиться цепочка из двух-трех переходов. В таком случае оставьте только один источник редиректа и отключите дублирующее правило.
Чек-лист перед публикацией правки
- Проверил, нужен ли attachment page как отдельная посадочная.
- Посмотрел, не закрывает ли ее уже SEO-плагин.
- Выбрал один способ: редирект или noindex.
- Проверил статус-код через
curl -Iили DevTools. - Убедился, что изображения в записях открываются как раньше.
- Проверил canonical и отсутствие лишних внутренних ссылок на attachment URL.
- Отправил на переобход важные URL в Search Console, если они уже были в индексе.
Практические советы по безопасности и производительности
Не ставьте редирект на все медиа без разбора. Если у вас есть изображения, которые реально используются как отдельные страницы — например, в портфолио или галереях с уникальным описанием, — сначала проверьте, не потеряете ли вы полезный трафик. Для таких кейсов лучше точечная настройка.
Код лучше держать в дочерней теме или mu-plugin, а не в основном шаблоне. Тогда при обновлении темы вы не потеряете правило. Если сайт большой, проверьте еще и кеш: после изменения правил очистите page cache, object cache и CDN, иначе старый ответ может висеть еще какое-то время.
Если вам нужен более широкий аудит дублей и технической чистки, имеет смысл смотреть не только на attachment pages, но и на архивы, параметры, пагинацию и служебные URL. В таких задачах часто помогает связка ручной проверки и инструментов для технической оптимизации, например Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Главная мысль простая: attachment-страницы не нужно «прятать на всякий случай». Сначала определите, есть ли у них ценность, потом выберите один механизм отключения и обязательно проверьте, что медиа в контенте продолжает работать без побочных эффектов.