Если в поиске всплывают страницы вида /attachment/, ?attachment_id= или отдельные URL вложений с пустым контентом, это почти всегда лишний мусор для индекса. Такие страницы редко несут ценность, но легко создают дубли, размывают внутреннюю перелинковку и мешают SEO-аудиту. На живых сайтах проблема обычно появляется после миграций, смены темы, импорта медиа или установки плагинов, которые не учитывают старую структуру ссылок.
Ниже разберём, как понять, что именно у вас индексируется, как безопасно отключить attachment-страницы, чем заменить их поведение и как проверить, что после правки не сломались изображения и вложения в контенте.
Как понять, что проблема именно в attachment-URL
Сначала не трогайте код. Проверьте, есть ли у сайта реальные страницы вложений и отдают ли они 200 OK. Это можно сделать через поиск по сайту и через краулер. Если у вас есть доступ к Search Console, посмотрите, не попадают ли в отчёты URL с attachment, media или параметрами, связанными с вложениями.
Что искать в индексе и в логике сайта
- страницы вложений с заголовком, но без полезного текста;
- URL изображений, которые открываются как отдельные HTML-страницы;
- дубли одного и того же изображения на нескольких URL;
- внутренние ссылки из контента на attachment-страницы вместо файла изображения.
Если сайт небольшой, можно быстро проверить руками: откройте несколько медиафайлов в библиотеке и посмотрите, ведёт ли кнопка просмотра на отдельную страницу вложения. Если да, а вам это не нужно, лучше отключить такой сценарий на уровне темы или небольшого плагина.
Что делать: три рабочих подхода
Есть три нормальных варианта. Выбор зависит от того, нужны ли вам attachment-страницы как отдельные сущности.
| Подход | Когда подходит | Минус |
|---|---|---|
| Редирект attachment на файл или родительскую запись | Почти всегда для контентных сайтов | Нужно аккуратно выбрать цель редиректа |
| Отключить attachment-архивы и отдавать 404/410 | Если страницы точно не нужны и уже не индексируются | Можно потерять старые входящие ссылки без редиректа |
| Оставить как есть, но закрыть от индексации | Если есть редкие сценарии использования вложений | Дубли остаются в обходе и внутренней структуре |
Для большинства сайтов практичнее редиректить attachment-страницы на файл или на родительскую запись. Это убирает мусор из индекса и не ломает старые ссылки из контента.
Пошаговое решение через код
Если вы контролируете тему или небольшой mu-plugin, добавьте редирект attachment-страниц. Этот вариант не зависит от SEO-плагинов и работает предсказуемо.
<?php
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$attachment_id = get_queried_object_id();
if (!$attachment_id) {
return;
}
$parent_id = wp_get_post_parent_id($attachment_id);
if ($parent_id) {
wp_safe_redirect(get_permalink($parent_id), 301);
exit;
}
$url = wp_get_attachment_url($attachment_id);
if ($url) {
wp_safe_redirect($url, 301);
exit;
}
wp_die('Attachment not found', 'Not Found', ['response' => 404]);
});Логика простая: если у вложения есть родительская запись, отправляем пользователя туда. Если родителя нет, ведём на сам файл. Это лучше, чем оставлять пустую attachment-страницу в индексе.
Если вам нужно не редиректить, а полностью убрать attachment-архивы из выдачи, можно отдать 404 для таких URL. Но делайте это только если уверены, что старые ссылки не важны.
<?php
add_action('template_redirect', function () {
if (is_attachment()) {
global $wp_query;
$wp_query->set_404();
status_header(404);
nocache_headers();
include get_query_template('404');
exit;
}
});Этот вариант жёстче. Он подходит, когда attachment-страницы уже не нужны вообще, а вы хотите убрать их из обхода и индекса без промежуточных редиректов.
Если используете SEO-плагин или чистку дублей
Иногда проще не писать код, а закрыть проблему через настройки SEO-плагина. Но здесь важно понимать, что именно делает плагин: ставит canonical, noindex или редиректит URL. Это разные действия с разным эффектом на индексацию.
Если у вас уже стоит плагин для технической чистки сайта, проверьте, есть ли у него отдельная опция для attachment-страниц и медиа-архивов. Например, в Clearfy Pro есть инструменты для удаления дублей и чистки технических URL; это полезно, когда нужно централизованно убрать лишние типы страниц, не лезя в шаблоны. Но перед включением любой опции смотрите, не меняет ли она поведение медиа в редакторе и не ломает ли старые ссылки.
Что лучше: редирект, canonical или noindex
Если цель — убрать дубли из поиска, редирект обычно надёжнее. Canonical помогает, когда страница должна существовать, но вы хотите указать основную версию. Noindex полезен как временная мера, но сам по себе не решает проблему внутренней структуры и обхода.
- Редирект — лучше для пустых attachment-страниц.
- Canonical — если страница нужна, но есть основная версия.
- Noindex — если нужно быстро снизить видимость, но не закрывать URL полностью.
Проверка результата после внедрения
После правки не ограничивайтесь открытием пары страниц в браузере. Проверьте поведение на уровне HTTP-ответа и индексации.
- Откройте несколько attachment-URL и убедитесь, что они отдают 301 на нужную цель или 404, если вы выбрали жёсткое отключение.
- Проверьте, что целевые URL доступны без цепочек редиректов.
- Посмотрите исходный код страницы: не осталось ли canonical на attachment-URL.
- В Search Console отправьте на переобход несколько старых URL и посмотрите, как они обрабатываются.
Для быстрой проверки можно использовать curl:
curl -I https://example.com/sample-attachment/
curl -I https://example.com/wp-content/uploads/2026/01/image.jpgВ ответе вам нужен либо 301 на нужный адрес, либо 404, если вы сознательно отключили страницу. Если видите 200 OK на пустой attachment-странице, значит редирект не сработал или его перебивает другой плагин.
Частые ошибки и почему они появляются
- Редирект на главную вместо родительской записи.
- Так делают «на автомате», но поисковики хуже понимают релевантность. Лучше вести на конкретную статью или на файл.
- Закрыли attachment в robots.txt, но не убрали страницы из индекса.
- Robots.txt не удаляет уже проиндексированные URL. Нужен редирект, noindex или 404/410.
- Отключили attachment-страницы, но сломали просмотр медиа в редакторе.
- Это бывает, если правка затронула не только фронтенд, но и административную логику.
- Поставили noindex и забыли про внутренние ссылки.
- Страницы всё ещё участвуют в обходе, а вес и клики уходят в пустые URL.
Безопасность и производительность
Любая правка такого типа должна быть обратимой. Не вносите код прямо в functions.php на боевом сайте без резервной копии. Лучше использовать mu-plugin или отдельный небольшой плагин, чтобы не потерять логику при смене темы.
Если сайт большой, после изменения правил редиректа очистите кэш страницы и кэш CDN, иначе часть URL будет продолжать отдавать старые ответы. Это особенно заметно на сайтах с агрессивным кешированием HTML.
Минимальный чек-лист перед выкладкой
- сделана резервная копия файлов и базы;
- проверены 2–3 реальных attachment-URL;
- понятно, куда ведёт редирект;
- очищен кэш плагина и CDN;
- проверен ответ сервера через
curl -Iили DevTools; - в Search Console добавлены URL на переобход.
Если после внедрения attachment-страницы всё ещё индексируются, ищите не только код темы, но и SEO-плагин, sitemap, старые ссылки в контенте и кэш на уровне сервера. В таких задачах проблема редко бывает в одном месте.