Если в поиске начинают всплывать отдельные страницы изображений, PDF или других медиафайлов вместо нормальных материалов, проблема почти всегда в attachment pages. WordPress создаёт для каждого загруженного файла отдельную страницу вложения, и она может индексироваться поисковиками как самостоятельный URL. Для большинства сайтов это лишний дубль: на такой странице обычно почти нет полезного текста, а пользователь после перехода из поиска не получает нужный контент.
Решение обычно состоит из двух частей: убрать страницы вложений из поиска и настроить редирект так, чтобы посетитель попадал либо на сам файл, либо на запись, где это вложение используется. Какой вариант выбрать, зависит от типа сайта и от того, нужен ли вам прямой доступ к файлу.
Что такое страницы вложений и почему они мешают в поиске
Когда вы загружаете изображение в медиатеку, WordPress создаёт не только сам файл, но и отдельную страницу attachment page. У неё есть собственный URL, заголовок, иногда описание и подпись. Если тема или плагин не вмешиваются в поведение по умолчанию, такие страницы могут попадать в индекс поисковых систем.
Проблема в том, что для пользователя эта страница редко полезна сама по себе. Чаще всего он хочет увидеть статью, товар, галерею или хотя бы сам файл в нормальном контексте. В результате в поиске появляется слабая страница, которая конкурирует с основным материалом и иногда перетягивает на себя трафик.
Особенно это заметно на сайтах с большим количеством изображений: блогах, каталогах, портфолио, новостных проектах. Если медиафайлы не являются отдельным контентом, attachment pages лучше либо отключить для индексации, либо перенаправлять.
Какой вариант редиректа выбрать
Перед настройкой важно понять, куда именно вести пользователя со страницы вложения. Универсального ответа нет, но на практике есть два рабочих сценария.
| Сценарий | Куда вести | Когда подходит |
|---|---|---|
| Файл нужен сам по себе | На прямой URL файла | Если пользователь должен открыть изображение, PDF, архив или другой медиафайл без промежуточной страницы |
| Файл используется внутри записи | На запись или страницу-источник | Если вложение — часть статьи, товара, проекта или галереи и отдельно не несёт смысла |
Редирект на файл удобен, когда медиа действительно используется как самостоятельный объект: например, для скачивания документа или просмотра изображения в полном размере. Редирект на запись чаще нужен для контентных сайтов, где вложение — лишь иллюстрация к статье. В этом случае пользователь сразу попадает в полезный контекст, а не на пустую страницу медиа.
Если у вложения нет привязанной записи, WordPress обычно не может автоматически отправить человека на «правильную» статью. Тогда остаётся либо редирект на сам файл, либо возврат на главную/архив, но последний вариант я бы использовал только как запасной, когда другого смысла у attachment page нет.
Самый простой способ: отключить attachment pages через плагин
Если вы не хотите править код темы или подключать собственный сниппет, проще всего использовать плагин, который умеет перенаправлять attachment pages. Для этой задачи подойдёт, например, Clearfy Pro, если вам нужен ещё и контроль над дублями и служебными страницами сайта. Но сам принцип остаётся одинаковым: ищите в настройках раздел, связанный с медиафайлами, attachment pages или редиректами вложений.
После включения редиректа проверьте две вещи: открывается ли старая страница вложения с кодом перенаправления и не ломается ли прямой доступ к файлу. Если плагин настроен на редирект к записи, убедитесь, что он действительно ведёт на нужную статью, а не на случайную страницу из медиатеки.
Плюс плагина в том, что он не требует вмешательства в шаблоны. Минус — вы зависите от конкретной реализации и настроек. Если на сайте уже много плагинов, лучше не плодить лишнюю логику и использовать либо один аккуратный плагин, либо небольшой код в теме или mu-plugin.
Редирект через код: когда нужен точный контроль
Если вам нужен предсказуемый результат без лишних зависимостей, редирект можно сделать кодом. Самый безопасный вариант — добавить небольшой сниппет в дочернюю тему или в отдельный mu-plugin. Не вставляйте такой код в основную тему, если она обновляется: после обновления изменения пропадут.
Ниже пример, который перенаправляет attachment pages на файл, если у вложения есть прямой URL. Если файла нет или WordPress не может его определить, редирект идёт на родительскую запись, а если и её нет — на главную страницу. Перед добавлением кода сделайте резервную копию и проверьте сайт на тестовой копии, если она есть.
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$attachment_id = get_queried_object_id();
$file_url = wp_get_attachment_url($attachment_id);
if ($file_url) {
wp_redirect($file_url, 301);
exit;
}
$parent_id = wp_get_post_parent_id($attachment_id);
if ($parent_id) {
wp_redirect(get_permalink($parent_id), 301);
exit;
}
wp_redirect(home_url('/'), 301);
exit;
});Этот вариант удобен, если вы хотите убрать attachment pages из поиска и одновременно сохранить прямой доступ к файлам. Но есть важная деталь: если у изображения есть смысл только внутри конкретной записи, редирект на файл не всегда лучший пользовательский сценарий. Тогда лучше направлять посетителя на родительскую запись, а не на медиафайл.
Если вы хотите перенаправлять только изображения, а не все типы вложений, код нужно доработать с проверкой MIME-типа. Это уже зависит от структуры сайта и от того, какие файлы вы храните в медиатеке.
Как убрать страницы вложений из поиска, а не только спрятать их редиректом
Редирект помогает пользователю и поисковику понять, что attachment page не является конечной страницей. Но если цель именно убрать их из поиска, одной переадресации обычно недостаточно. Поисковый робот должен увидеть, что старый URL больше не является самостоятельной страницей, и со временем исключить его из выдачи.
Практически это работает так: вы настраиваете 301-редирект, а затем проверяете, что страницы вложений больше не доступны как отдельный контент. Если на сайте уже есть sitemap, убедитесь, что туда не попадают attachment pages. В стандартном WordPress они обычно не включаются в карту сайта как отдельный тип контента, но плагины SEO могут вести себя по-разному.
Если у вас есть SEO-плагин, проверьте, не создаёт ли он отдельные архивы или индексацию для медиа. Иногда проблема не в самом WordPress, а в настройках плагина, который добавляет лишние URL в карту сайта или разрешает индексацию служебных страниц.
Как проверить, что всё работает правильно
После настройки не ограничивайтесь визуальной проверкой в браузере. Откройте несколько старых URL вложений напрямую и посмотрите, куда они ведут. Нужен именно ответ с редиректом, а не страница с содержимым attachment page.
Проверить можно так:
- откройте URL вложения в режиме инкогнито;
- убедитесь, что адрес меняется на файл или запись;
- проверьте, что код ответа — 301, если вы используете постоянный редирект;
- посмотрите, не остались ли такие URL в индексе через поиск по сайту или в панели вебмастера;
- откройте сам файл, если вы ведёте на него, и проверьте, что он доступен напрямую.
Если редирект не срабатывает, чаще всего причина в том, что код добавлен не туда, кэш не обновился или другой плагин перехватывает шаблон вложения. В таком случае временно отключите кэширование, проверьте конфликт плагинов и убедитесь, что редирект выполняется именно на этапе template_redirect, а не слишком поздно.
Что делать, если вложения уже в индексе
Если страницы вложений уже попали в поиск, одного редиректа может быть недостаточно для мгновенного исчезновения. Поисковику нужно время, чтобы переобойти старые URL и увидеть новый ответ. Это нормальная ситуация.
Не стоит удалять такие страницы через 404, если у вас есть понятный вариант перенаправления. Для уже проиндексированных URL 301-редирект обычно лучше: он сохраняет пользовательский путь и помогает поисковой системе понять, что страница переехала или заменена.
Если же attachment page вообще не должна существовать в вашей логике сайта, а файл не нужен для прямого доступа, можно направлять её на родительскую запись. Так вы не теряете входящий трафик и не оставляете пользователя на пустой странице.
Когда лучше вести на запись, а когда на файл
На практике я бы ориентировался так. Если медиа — это часть статьи, товара или проекта, редиректите на запись. Если медиа — самостоятельный объект, который пользователь должен открыть напрямую, редиректите на файл. Это простое правило закрывает большинство случаев без лишней логики.
Для новостных и контентных сайтов редирект на запись обычно полезнее: он возвращает посетителя в контекст, где есть заголовок, текст и навигация. Для сайтов с документами, каталогами файлов или фотобанками прямой файл может быть важнее, потому что пользователь ожидает именно его.
Главное — не оставлять attachment pages как отдельные «пустые» страницы, если они не несут самостоятельной ценности. Именно они чаще всего и всплывают в поиске вместо нужного материала.
Если вам нужно быстро привести сайт в порядок, начните с редиректа вложений и проверьте, не создаёт ли SEO-плагин лишние URL для медиа. После этого старые страницы вложений постепенно выпадут из поиска, а пользователи будут попадать туда, где действительно есть полезный контент.