Attachment-страницы в WordPress часто попадают в индекс как отдельные URL с почти пустым содержимым. На небольшом сайте это выглядит безобидно, но на проектах с активной загрузкой изображений такие страницы быстро создают мусор в индексе, дубли и лишние точки входа из поиска.
Проблема обычно не в самих файлах изображений, а в том, что WordPress по умолчанию создаёт для вложения отдельную страницу-обёртку. Если её не контролировать, поисковик может индексировать именно её, а не полезную страницу записи, где изображение используется по делу.
Как понять, что проблема именно в attachment-страницах
Сначала проверьте, что в индексе действительно есть URL вида /sample-image/, ?attachment_id=123 или похожие страницы вложений. В Search Console это видно по отчётам об индексировании и по результатам поиска по сайту.
Признаки, которые встречаются чаще всего
- в поиске всплывают страницы с названием файла изображения или его заголовком;
- в отчётах много URL с очень коротким или пустым контентом;
- страница вложения открывается отдельно, хотя пользователю она не нужна;
- внутренние ссылки ведут не на запись, а на attachment-URL.
Если у вас включён SEO-плагин, он может уже ставить noindex для медиа-страниц. Но полагаться только на это не стоит: настройки темы, старые записи и сторонние плагины иногда меняют поведение.
Что именно нужно отключить
Задача не в том, чтобы убрать изображения из сайта. Нужно отключить индексацию именно attachment-страниц и, по возможности, перенаправлять их на файл или на родительскую запись. Для большинства сайтов лучший вариант — редирект на пост, где вложение используется, либо на сам файл, если родителя нет.
| Подход | Что делает | Когда подходит |
|---|---|---|
| Плагин SEO | Ставит noindex и иногда редиректит attachment-страницы | Если нужен быстрый результат без кода |
| Код в теме или mu-plugin | Даёт точный контроль над редиректом и мета-роботами | Если нужен предсказуемый технический вариант |
| Только robots.txt | Ограничивает обход, но не решает индексацию надёжно | Как вспомогательная мера, не как основное решение |
Пошаговое решение через код
Если нужен контролируемый вариант без лишней зависимости от интерфейса плагина, проще всего добавить редирект для attachment-страниц. Код лучше размещать в дочерней теме или в отдельном mu-plugin, чтобы он не исчез после обновления темы.
<?php
add_action( 'template_redirect', function () {
if ( ! is_attachment() ) {
return;
}
$post = get_post();
if ( ! $post ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
$parent_id = (int) $post->post_parent;
if ( $parent_id > 0 ) {
$parent_url = get_permalink( $parent_id );
if ( $parent_url ) {
wp_safe_redirect( $parent_url, 301 );
exit;
}
}
$file_url = wp_get_attachment_url( $post->ID );
if ( $file_url ) {
wp_safe_redirect( $file_url, 301 );
exit;
}
wp_safe_redirect( home_url( '/' ), 301 );
exit;
} );Этот вариант решает сразу две задачи: пользователь не попадает на пустую страницу вложения, а поисковик получает понятный сигнал, что канонический адрес находится в другом месте.
Если нужен только noindex
Иногда редирект нежелателен, например если attachment-страницы уже используются в каком-то старом шаблоне или внешней интеграции. Тогда можно добавить мета-робот для вложений.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_attachment() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот способ не убирает URL из обхода сразу, но снижает риск их закрепления в индексе. На практике его лучше сочетать с редиректом, если attachment-страницы не нужны вообще.
Когда лучше использовать плагин
Если у вас уже стоит SEO-плагин, проверьте его настройки медиа. Во многих случаях проще включить noindex для attachment-страниц в интерфейсе, чем поддерживать отдельный код. Но даже тогда полезно проверить, не создаёт ли тема собственные ссылки на attachment-URL.
Если нужен более широкий набор технических настроек — чистка дублей, управление индексацией архивов, служебных страниц и мусорных URL — удобнее смотреть в сторону инструментов вроде Clearfy Pro. Но важно не включать всё подряд: сначала проверьте, что именно создаёт проблему, и только потом меняйте поведение.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой в браузере. Нужны три проверки: HTTP-ответ, мета-роботы и отсутствие новых внутренних ссылок на attachment-URL.
- Откройте attachment-страницу и убедитесь, что она отдаёт
301на родительскую запись или файл. - Если выбран noindex, проверьте исходный код страницы на наличие
noindex. - В Search Console отправьте URL на проверку и посмотрите, как робот видит страницу.
- Проверьте карту сайта: attachment-URL не должны попадать туда.
- Сделайте поиск по сайту в базе или через краулер и убедитесь, что внутренние ссылки ведут на запись, а не на вложение.
Для быстрой проверки редиректа удобно использовать curl -I:
curl -I https://example.com/sample-image/В ответе должен быть либо 301 Moved Permanently, либо другой ожидаемый код, если вы выбрали альтернативную схему.
Частые ошибки и как их исправить
Редирект сделан на главную страницу для всех вложений
Это рабочий, но грубый вариант. Он теряет контекст и может ухудшить поведение пользователей, если attachment-страницы уже где-то используются. Лучше сначала пытаться вести на родительскую запись, а уже потом на файл или главную.
В robots.txt добавили Disallow и решили, что этого достаточно
Это распространённая ошибка. Запрет обхода не равен удалению из индекса. Если URL уже известен поисковику, он может оставаться в выдаче без контента. Для таких страниц нужен редирект или noindex, а robots.txt — только дополнение.
Сломались ссылки на изображения в старых записях
Обычно это происходит, если редирект настроили слишком агрессивно и не проверили, как тема выводит медиа. Если изображение открывается как вложение в старом шаблоне, сначала найдите этот шаблон и замените ссылку на файл или на нужную запись.
Attachment-страницы всё равно появляются в индексе
Причина может быть в кеше, в старых sitemap или в том, что поисковик ещё не переобходил сайт. После изменения дайте время на переобход, затем проверьте карту сайта и внутренние ссылки. Если URL остались в выдаче надолго, отправьте их на повторную проверку в Search Console.
Безопасность и производительность
Редиректы и фильтры лучше держать в отдельном небольшом сниппете, а не в случайном файле темы. Если вы работаете на продакшене, сначала проверьте код на staging-копии. Ошибка в условии is_attachment() или в логике редиректа может затронуть не только медиа, но и другие шаблоны.
С точки зрения производительности этот сценарий не тяжёлый, но лишние attachment-страницы всё равно создают шум: робот тратит обход на бесполезные URL, а сервер отдаёт больше ненужных ответов. Для больших сайтов это уже не косметика, а реальная техническая уборка.
Короткий чек-лист перед публикацией изменений
- Проверить, есть ли attachment-URL в индексе.
- Решить, нужен ли редирект или достаточно noindex.
- Добавить код в дочернюю тему или mu-plugin.
- Проверить HTTP-ответ и исходный код страницы.
- Убедиться, что attachment-URL не попадают в sitemap.
- Переобойти проблемные URL в Search Console.
Если задача стоит шире и нужно навести порядок не только в медиа-страницах, но и в дублях, служебных URL и техническом мусоре, имеет смысл решать это как часть общей SEO-гигиены сайта, а не точечно по одному типу страниц.