Attachment-страницы в WordPress часто всплывают в индексе как отдельные URL с тонким или пустым содержимым. На небольшом сайте это выглядит как мелкая техническая деталь, но на практике такие страницы создают дубли, размывают внутреннюю перелинковку и иногда отъедают краулинговый бюджет у нормальных материалов. Если у вас в отчётах Search Console появляются URL вида /attachment/ или медиафайлы индексируются как отдельные страницы, проблему лучше закрыть системно, а не точечно.
Ниже разберём, как понять, что именно у вас происходит, какие есть варианты решения и как проверить, что после правки WordPress действительно перестал отдавать лишние страницы вложений.
Когда attachment-страницы становятся проблемой
В WordPress каждое загруженное изображение может иметь собственную страницу вложения. Это не файл картинки, а отдельная запись типа attachment с собственным URL. Если тема или плагин не переопределяют поведение, поисковик видит такую страницу как обычный HTML-документ.
Проблема обычно проявляется в одном из сценариев:
- в индексе есть URL вложений, а в сниппетах — пустой или почти пустой контент;
- в отчётах по дублям появляются страницы медиабиблиотеки и их родительские записи;
- внутренние ссылки ведут не на саму статью, а на attachment-страницу изображения;
- после миграции или смены темы количество мусорных URL резко выросло.
Быстрая диагностика
Сначала проверьте, действительно ли WordPress отдаёт attachment-страницы как отдельные документы. Проще всего открыть в браузере URL изображения и посмотреть, не редиректит ли он на вложение. Ещё полезнее — поискать в Search Console запросом site:example.ru inurl:attachment или проверить покрытие индекса по URL медиафайлов.
Если есть доступ к серверу, посмотрите заголовки ответа:
curl -I https://example.ru/2024/10/photo-name/Если вместо редиректа на родительскую запись или сам файл вы видите обычный 200 OK с HTML-страницей, attachment-URL живёт своей жизнью и его нужно отключать.
Что лучше: редирект, noindex или полное отключение
Универсального ответа нет. Выбор зависит от того, используются ли attachment-страницы в теме и есть ли на них реальный трафик. Для большинства сайтов это технический мусор, но иногда медиа-страницы специально оформлены как галереи.
| Подход | Когда подходит | Минусы |
|---|---|---|
| Редирект на файл или родительскую запись | Если attachment-страницы не нужны, но старые URL уже в индексе | Нужно аккуратно выбрать цель редиректа |
noindex | Если нужно оставить страницу доступной для пользователей, но убрать из поиска | URL остаётся в обходе, не решает внутренние дубли |
| Полное отключение attachment-страниц | Если вложения нигде не используются как отдельные страницы | Нужно проверить тему и плагины, чтобы ничего не сломать |
Для большинства проектов самый практичный вариант — отключить attachment-страницы и настроить редирект на родительскую запись, если она есть. Если родителя нет, можно вести на сам файл изображения или на главную медиатеки, но это уже зависит от структуры сайта.
Пошаговое решение через код
Ниже вариант без плагинов. Он отключает просмотр attachment-страниц и перенаправляет их на родительскую запись, если она существует. Код лучше добавить в дочернюю тему или в собственный мини-плагин, а не в файл основной темы.
<?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;
});Что делает этот код:
- проверяет, открыта ли attachment-страница;
- пытается найти родительскую запись;
- если родитель есть — отправляет туда;
- если родителя нет — ведёт на сам файл изображения;
- если и это не удалось — уводит на главную, чтобы не оставлять битый URL.
Если вам нужно не редиректить, а просто закрыть страницу от индексации, можно добавить мета-тег noindex для attachment-страниц. Но это слабее, чем редирект: URL всё равно будет существовать и может попадать в обход поисковика.
<?php
add_action('wp_head', function () {
if (is_attachment()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Этот вариант имеет смысл только как временная мера или если attachment-страницы нужны пользователям, но не должны индексироваться.
Как сделать это через плагин и не усложнять поддержку
Если на сайте уже используется плагин для SEO и технической чистки, проверьте, умеет ли он отключать attachment-страницы без ручного кода. Например, в Clearfy Pro есть инструменты для удаления дублей и технической оптимизации, и для типовых сайтов это часто проще, чем держать кастомный сниппет в теме. Но даже в этом случае важно понимать, что именно делает настройка: редирект, noindex или отключение шаблона.
Плагин удобен, когда:
- сайт поддерживает не разработчик, а редактор или администратор;
- нужно централизованно управлять SEO-настройками;
- есть риск, что код в теме потеряется при обновлении.
Код предпочтительнее, если нужен предсказуемый результат и минимальная зависимость от стороннего интерфейса. Для production-сайта я бы выбирал один способ и не дублировал его сразу в плагине и в теме.
Проверка результата после внедрения
После правки не ограничивайтесь тем, что страница «визуально исчезла». Нужно проверить именно техническое поведение.
- Откройте несколько attachment-URL вручную и убедитесь, что они редиректят с кодом 301.
- Проверьте заголовки ответа через
curl -Iили любой HTTP-инспектор. - Посмотрите исходный код страницы, если выбрали
noindex: мета-тег должен присутствовать только на attachment-URL. - В Search Console отправьте на переобход несколько старых URL, чтобы поисковик быстрее увидел новую схему.
Полезно проверить и внутренние ссылки. Если тема выводит миниатюры через ссылку на attachment-страницу, редирект спасёт от индексации, но не исправит саму разметку. В таком случае лучше искать шаблон, который формирует ссылку, и заменить её на прямой URL файла или на ссылку на запись-родитель.
Частые ошибки и как их исправить
Редирект сделан на главную без разбора
Это рабочий, но грубый вариант. Если у вложения есть родительская запись, логичнее вести именно туда. Иначе пользователь, пришедший по старой ссылке, теряет контекст.
Код добавили в файл темы, а потом обновили тему
После обновления правка исчезает. Для таких задач используйте дочернюю тему или отдельный мини-плагин.
Поставили и редирект, и noindex одновременно в разных местах
Так легко получить конфликт логики: один плагин отдаёт 301, другой пытается вставить мета-тег, третий меняет canonical. В итоге диагностика становится сложнее, чем сама проблема. Оставьте один источник истины.
Не проверили, как тема использует изображения
Некоторые шаблоны строят галереи или слайдеры на attachment-страницах. Если просто отключить их без теста, можно сломать навигацию в блоках галереи или в старых записях.
Безопасность и производительность: что учесть
Отключение attachment-страниц само по себе не ускорит сайт радикально, но уменьшит количество бесполезных URL, которые приходится обходить и переобходить. Это особенно заметно на сайтах с большим архивом изображений.
Если вы правите кодом, используйте только wp_safe_redirect() и не подставляйте в редирект произвольные пользовательские данные. Для attachment-страниц это не критично, но привычка писать безопасные редиректы полезна в любом проекте.
Ещё один практический момент: не храните в медиабиблиотеке дубли файлов с одинаковым содержимым и разными именами. Attachment-страницы часто становятся лишь верхушкой проблемы, а настоящая причина — хаотичная работа с изображениями и отсутствующий контроль за медиа.
Короткий чек-лист перед публикацией правки
- Проверить, используются ли attachment-страницы в теме.
- Выбрать один сценарий: редирект, noindex или отключение.
- Добавить код в дочернюю тему или мини-плагин.
- Проверить HTTP-коды и цепочки редиректов.
- Сверить поведение на нескольких типах вложений: изображения, PDF, другие файлы.
- Переобойти старые URL в Search Console.
Если нужен более широкий аудит дублей и технических страниц, имеет смысл сразу проверить архивы автора, даты, пагинацию и canonical. Attachment-страницы редко бывают единственной причиной мусора в индексе, но их удобно убрать первыми: логика простая, эффект проверяется быстро, а риск для контента минимален, если заранее посмотреть, как сайт использует медиа.