WordPress по умолчанию создает для каждого загруженного изображения отдельную страницу вложения — attachment page. Если такие страницы попадают в индекс, поисковик может видеть десятки или сотни тонких дублей без полезного контента. Для небольшого блога это чаще всего лишний шум, а для большого сайта с медиаархивом — еще и расход краулингового бюджета.
Закрыть вложения от индексации можно разными способами: через редирект на сам файл или родительскую запись, через плагин SEO, через robots.txt или через мета-тег noindex. На практике самый надежный вариант — не оставлять attachment pages доступными для индексации вообще, а при необходимости еще и перенаправить их на изображение или статью.
Когда attachment pages действительно вредят SEO
Проблема не в самих изображениях, а в страницах, которые WordPress генерирует вокруг них. На такой странице обычно мало текста, нет самостоятельной ценности и часто есть только картинка, заголовок и стандартная тема оформления. Для поиска это слабая страница, которая легко становится дублем или «тонкой» страницей.
Закрывать вложения имеет смысл, если:
- на сайте много изображений, а attachment pages не несут отдельной пользы;
- в поиске уже есть страницы вида
/attachment/...или медиа-URL с индексируемыми страницами вложений; - вы не используете attachment pages как отдельные посадочные страницы;
- на сайте есть дубли: одна и та же картинка доступна и как файл, и как страница вложения, и через превью в записи.
Если же у вас фотогалерея, портфолио или каталог, где страницы вложений специально оформлены и содержат полезный текст, закрывать их бездумно не стоит. В таком случае нужно сначала оценить, есть ли у этих страниц самостоятельная ценность для поиска.
Самый безопасный способ: перенаправить страницы вложений
Для большинства сайтов лучший вариант — не просто закрыть attachment pages, а сделать 301-редирект. Тогда пользователь и робот не попадут на пустую страницу, а сразу окажутся на родительской записи или на самом файле изображения.
Если у вас уже есть SEO-плагин, проверьте, умеет ли он отключать attachment pages. Во многих случаях это делается без кода. Но если нужен точечный и предсказуемый вариант, можно добавить небольшой код в functions.php дочерней темы или в собственный мини-плагин.
Перед изменениями сделайте резервную копию. Если ошибка попадет в functions.php, сайт может стать недоступным до исправления.
Этот код перенаправляет страницу вложения на родительскую запись, а если родителя нет — на сам файл изображения:
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$parent_id = wp_get_post_parent_id( get_queried_object_id() );
if ( $parent_id ) {
wp_redirect( get_permalink( $parent_id ), 301 );
exit;
}
$file_url = wp_get_attachment_url( get_queried_object_id() );
if ( $file_url ) {
wp_redirect( $file_url, 301 );
exit;
}
}
} );Что здесь важно: is_attachment() срабатывает только на страницах вложений, wp_get_post_parent_id() ищет родительскую запись, а wp_redirect() делает постоянный редирект. Для SEO это обычно лучше, чем оставлять пустую страницу с noindex, потому что URL перестает быть отдельной сущностью для индексации.
Как закрыть вложения от индексации без кода
Если вы не хотите трогать тему, используйте SEO-плагин. У большинства популярных решений есть настройка для медиафайлов или attachment pages. Названия пунктов отличаются, но логика одна: либо включается редирект, либо ставится noindex, либо отключается сам архив вложений.
Этот путь удобен, если сайт ведет не разработчик, а редактор или владелец проекта. Плюс в том, что настройка обычно не ломается при обновлении темы. Минус — не все плагины одинаково обрабатывают вложения, поэтому после включения опции нужно проверить результат вручную.
Если в плагине есть выбор между редиректом и noindex, для обычного сайта чаще лучше редирект. noindex оставляет URL доступным, а значит, страница все равно может обходиться роботами. Это не критично, но менее чистое решение, чем 301-редирект.
Почему robots.txt — не лучший способ для этой задачи
Иногда пытаются закрыть attachment pages через robots.txt. Для этой задачи это слабый вариант. Запрет в robots.txt мешает обходу, но не гарантирует удаление URL из индекса, если поисковик уже знает адрес и получил его из внешних или внутренних ссылок.
Кроме того, robots.txt не решает проблему дубля как таковую. Страница остается на сайте, а поисковик просто не всегда может ее переобойти. Если цель — убрать вложения из поиска, лучше использовать редирект или noindex на уровне страницы.
Как проверить, что вложения действительно закрыты
После настройки проверьте несколько типичных URL вложений:
- откройте страницу вложения в браузере и убедитесь, что она редиректит на запись или файл;
- посмотрите код ответа сервера — для редиректа должен быть
301; - проверьте исходный код страницы, если вы использовали
noindex: в<head>должен быть мета-тег robots сnoindex; - в панели вебмастера поисковой системы отправьте URL на повторную проверку, если страница уже была в индексе.
Если у вас включен кэш, очистите его после изменения настроек. Иначе вы можете проверить старую версию страницы и решить, что редирект не работает.
Что выбрать в реальном проекте
| Сценарий | Что делать | Почему |
|---|---|---|
| Обычный блог или корпоративный сайт | Редирект attachment pages на родительскую запись или файл | Убирает пустые URL из индекса и не оставляет дубль |
| Нужно быстро закрыть без кода | Включить настройку в SEO-плагине | Подходит владельцу сайта без правок темы |
| Есть отдельные полезные страницы вложений | Не закрывать автоматически, а проверить каждую страницу | Некоторые attachment pages могут быть полезны для поиска |
Используется только robots.txt | Лучше заменить на редирект или noindex | Запрет обхода не равен удалению из индекса |
Если сайт небольшой и attachment pages нигде не используются, не усложняйте решение. Самый практичный вариант — редирект и проверка, что старые URL больше не отдают отдельную страницу вложения. Если же у вас уже есть SEO-плагин, сначала посмотрите его настройки: часто этого достаточно, чтобы закрыть вложения без ручного кода.
В итоге задача сводится к одному: не оставлять WordPress-медиа как отдельные пустые страницы в поиске. Для большинства проектов это улучшает структуру индекса и убирает лишние дубли, не затрагивая сами изображения и записи.