Attachment-страницы в WordPress часто остаются незаметными до тех пор, пока в индексе не появляются сотни пустых URL с изображениями, PDF и другими файлами. Для SEO это обычно мусор: контента на таких страницах мало, а в выдачу они попадают быстрее, чем полезные записи. При этом сами файлы и ссылки на них трогать не нужно.
Ниже — рабочая схема: как диагностировать проблему, чем закрывать attachment-страницы, как не сломать загрузку медиа и как проверить, что всё действительно сработало.
Когда attachment-страницы становятся проблемой
В WordPress у каждого загруженного файла может быть отдельная attachment-страница. Если тема или плагин выводит на неё ссылку, поисковик получает ещё один URL для обхода и индексации. На небольшом сайте это может быть незаметно, но на контентных проектах с большим количеством изображений такие страницы быстро разрастаются.
Типичные признаки:
- в поиске находятся URL вида
/attachment/,?attachment_id=или страницы вложений с названием файла; - в отчётах сканирования много URL с тонким или пустым содержимым;
- внутренние ссылки из записей ведут не на файл, а на attachment-страницу;
- в sitemap или в обходе сайта есть лишние страницы, которые не несут пользы пользователю.
Что именно нужно закрывать
Задача не в том, чтобы запретить доступ к файлам. Изображения, PDF и другие вложения должны продолжать открываться по прямому адресу. Закрывать нужно именно attachment-страницы как HTML-обёртку вокруг файла. Это разные сущности.
Диагностика: где искать дубли и лишние страницы
Перед правкой проверьте, как именно у вас создаются attachment-URL. На разных сайтах проблема выглядит по-разному: где-то это архивы вложений, где-то отдельные страницы медиафайлов, где-то ссылки в теме или в редакторе.
Проверьте индексацию в поиске и краулере
Откройте поиск по сайту и посмотрите, какие URL попадают в индекс. Если есть доступ к краулеру или Search Console, выгрузите список страниц с низким количеством слов, без основного контента и с типом вложения. Это самый быстрый способ понять масштаб.
Полезно проверить и сам шаблон attachment-страницы: если на ней только заголовок, картинка и ссылка на файл, то индексировать её обычно нет смысла.
Посмотрите, как формируются ссылки на медиа
В редакторе и в теме проверьте, куда ведут клики по изображениям. Иногда в настройках медиа выбран переход на attachment-страницу по умолчанию. Тогда каждая вставка изображения создаёт ещё один путь для обхода.
Как закрыть attachment-страницы: сравнение подходов
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Плагин для SEO/чистки сайта | Если нужен быстрый и безопасный вариант без правки кода | Проще внедрить, меньше риска ошибиться | Зависимость от настроек плагина |
| Код в теме или mu-plugin | Если нужен точечный контроль и минимальная зависимость | Прозрачно, легко проверить, не тянет лишнюю логику | Нужно аккуратно поддерживать после обновлений |
| Редирект attachment на файл или родительскую запись | Если attachment-страницы уже в индексе и их нужно убрать из выдачи | Быстро выводит лишние URL из обхода | Нужно следить, чтобы не сломать пользовательский сценарий |
Если у вас уже есть SEO-плагин с настройкой для attachment-страниц, это обычно самый практичный путь. Если настройки нет или нужен более точный контроль, проще добавить небольшой код.
Пошаговое решение через код
Ниже вариант, который переводит attachment-страницы в noindex,follow и при необходимости редиректит их на файл или родительскую запись. Такой подход не мешает загрузке медиа и не ломает прямые ссылки на файлы.
1. Добавьте noindex для attachment-страниц
Если attachment-страницы должны остаться доступными по URL, но не должны попадать в индекс, добавьте мета-тег robots через wp_head:
add_action( 'wp_head', function () {
if ( is_attachment() ) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
} );Этот вариант полезен, когда вы не хотите сразу делать редирект, а сначала выводите страницы из индекса мягко.
2. При необходимости сделайте редирект attachment-страницы
Если attachment-страницы не нужны пользователю вообще, можно отправлять их на файл или на родительскую запись. Для этого используйте template_redirect:
add_action( 'template_redirect', function () {
if ( ! is_attachment() ) {
return;
}
global $post;
if ( $post instanceof WP_Post ) {
$parent_id = (int) $post->post_parent;
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;
} );Логика простая: если у вложения есть родительская запись, отправляем туда. Если родителя нет, ведём на сам файл. Если и это не удалось, уводим на главную как запасной вариант.
3. Не забудьте про каноникал, если он генерируется темой или плагином
Некоторые SEO-плагины сами ставят canonical на attachment-страницы. Если вы делаете редирект, это уже не критично, но при варианте с noindex лучше проверить, что canonical не указывает на саму attachment-страницу без необходимости. В идеале canonical должен вести на родительскую запись или отсутствовать, если страница не должна индексироваться.
Если используете плагин: что проверить в настройках
В SEO-плагинах и плагинах для чистки сайта обычно есть отдельные опции для медиа-страниц, архивов вложений или редиректа attachment URL. Названия пунктов отличаются, поэтому ориентируйтесь не на формулировку, а на результат: attachment-страницы не должны индексироваться и не должны быть точкой входа из поиска.
- ищите настройку, связанную с
attachment pagesилиmedia pages; - проверьте, не включён ли отдельный sitemap для медиа-страниц;
- посмотрите, не создаёт ли плагин редирект только для изображений, но не для PDF и других файлов;
- после изменения очистите кеш плагина и серверный кеш.
Если у вас уже стоит плагин для технической чистки сайта, например Clearfy Pro, проверьте именно поведение attachment-страниц, а не только общие SEO-настройки. В таких задачах важна не галочка сама по себе, а то, что реально отдаёт сервер.
Проверка результата после внедрения
После правки не ограничивайтесь открытием одной страницы в браузере. Нужно проверить и HTTP-ответ, и индексацию, и поведение ссылок в контенте.
Что проверить вручную
- откройте несколько attachment-URL в режиме инкогнито;
- убедитесь, что они либо отдают
301на нужный адрес, либо содержатnoindex; - проверьте, что прямой URL файла по-прежнему открывается;
- кликните по изображению в записи и посмотрите, куда ведёт ссылка;
- очистите кеш, если используется page cache или CDN.
Проверка через curl
Если есть доступ к консоли, проще всего проверить заголовки ответа:
curl -I https://example.com/sample-image/Для редиректа вы должны увидеть 301 и заголовок Location. Для варианта с noindex — обычный 200, но в HTML должен быть мета-тег robots с noindex,follow.
Проверка в поисковой системе
Через несколько дней или недель после изменения посмотрите, уменьшается ли число attachment-URL в индексе и в отчётах обхода. Если страницы продолжают появляться, значит где-то остались внутренние ссылки или старый кеш отдаёт прежнюю версию.
Частые ошибки и как их исправить
С attachment-страницами легко ошибиться, потому что проблема выглядит как SEO-настройка, а ломается иногда на уровне шаблона или кеша.
- Закрыли сами файлы вместо attachment-страниц. Проверьте, что редирект или noindex применяются только к
is_attachment(), а не ко всем медиа-URL. - Сделали 302 вместо 301. Для постоянного удаления из индекса нужен именно постоянный редирект, если вы уверены, что страница больше не нужна.
- Не очистили кеш. После изменения старые HTML-страницы и заголовки могут продолжать отдаваться из кеша.
- Оставили ссылки на attachment-страницы в теме. Тогда поисковик и пользователи всё равно будут попадать на лишние URL.
- Поставили noindex, но не проверили canonical. Иногда canonical продолжает указывать на саму attachment-страницу, и это мешает вычищать дубли.
Практические советы по безопасности и производительности
Если attachment-страниц много, не пытайтесь чинить их вручную по одной. Лучше один раз закрыть источник проблемы и проверить шаблоны вывода медиа. Это уменьшит количество лишних URL и снизит нагрузку на обход сайта.
Для аккуратного внедрения код лучше держать в mu-plugin или в дочерней теме, а не в основной теме, если она часто обновляется. Так вы не потеряете настройку после апдейта.
Если на сайте много изображений и файлов, полезно отдельно проверить:
- не создаёт ли тема ссылки на attachment-страницы по умолчанию;
- не дублируются ли изображения в нескольких размерах без необходимости;
- не отдаются ли старые attachment-URL через кеш после удаления вложений;
- не индексируются ли PDF и другие документы, если они тоже не должны быть в поиске.
В сложных случаях удобнее сначала закрыть attachment-страницы через noindex, а уже потом, когда убедитесь в отсутствии побочных эффектов, перевести их на редирект. Это снижает риск сломать старые ссылки в контенте и даёт время на проверку.