На WordPress страницы вложений часто создаются автоматически: у каждого изображения, PDF или другого файла появляется отдельный URL. Если сайт активно публикует контент, такие страницы быстро превращаются в мусорные дубли: у них пустой или почти пустой контент, слабая внутренняя перелинковка и нулевая ценность для поиска. При этом поисковик может индексировать их вместо полезных страниц записи или медиа-архива.
Ниже разберём, как проверить, есть ли у вас проблема с attachment-страницами, и что лучше сделать: закрыть их от индексации, настроить редирект или оставить только в технических сценариях.
Когда attachment-страницы становятся проблемой
Сама по себе страница вложения не всегда вредна. Проблема начинается, когда:
- в теме или плагине не настроен редирект с attachment URL на файл или родительскую запись;
- поисковик индексирует десятки и сотни пустых страниц вложений;
- в sitemap попадают URL, которые не несут пользы пользователю;
- внутренние ссылки ведут на attachment вместо нормальной страницы записи;
- в медиабиблиотеке много PDF, изображений и документов, у которых есть отдельные страницы с тонким контентом.
Если сайт небольшой, это может не бросаться в глаза. Но на контентных проектах и новостниках attachment-страницы часто всплывают в отчётах Search Console как отдельный слой мусорных URL.
Диагностика: как понять, что у вас именно эта проблема
Сначала проверьте, что реально индексируется. Не надо сразу массово закрывать всё подряд: сначала найдите источник дублей.
Проверка через поиск и Search Console
В поиске можно быстро увидеть, есть ли attachment-страницы в индексе. Ищите по шаблону:
site:example.com inurl:attachmentЕсли Google показывает такие URL, откройте несколько страниц и посмотрите, что на них есть. Обычно это пустой заголовок, картинка и минимум текста.
В Google Search Console проверьте:
- отчёт по страницам, исключённым из индекса;
- страницы с пометками про дубли или «просканировано, но не проиндексировано»;
- URL inspection для конкретной attachment-страницы.
Проверка в самой WordPress
Если нужен быстрый аудит, посмотрите, как ведут себя ссылки на медиа. Откройте запись с изображением и кликните по нему. Если URL ведёт на отдельную страницу вложения, а не на файл или на саму запись, это уже кандидат на правку.
Ещё один признак: в HTML есть ссылки вида /wp-content/uploads/... или attachment permalink, и они не закрыты от индексации.
Что делать: три рабочих подхода
Подход зависит от того, нужен ли вам вообще отдельный URL для медиа. В большинстве проектов attachment-страницы не нужны, и их лучше либо закрыть, либо редиректить.
| Вариант | Когда подходит | Минус |
|---|---|---|
| Закрыть от индексации | Если URL нужен технически, но не должен попадать в поиск | Страница остаётся доступной по прямой ссылке |
| Редирект на файл или запись | Если attachment-страницы не нужны вообще | Нужно аккуратно выбрать цель редиректа |
| Отключить attachment URL на уровне темы/плагина | Если есть контроль над кодом и нужен чистый результат | Требует тестирования после обновлений |
Вариант 1: закрыть attachment-страницы от индексации
Если вам важно оставить URL доступным, но убрать его из поиска, можно добавить noindex для attachment-типов. В WordPress это удобно делать через фильтр wp_robots.
add_filter('wp_robots', function ($robots) {
if (is_attachment()) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Этот вариант хорош, если у вас есть внешние ссылки на медиа-страницы или вы не хотите ломать старые URL. Но он не решает проблему дублей полностью, если поисковик уже успел собрать много таких страниц.
Вариант 2: редиректить attachment-страницы
На практике это часто лучший вариант. Пользователь и робот попадают не на пустую страницу вложения, а на полезную цель: родительскую запись, если она есть, или сам файл.
Пример через template_redirect:
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$post = get_post();
if (!$post) {
return;
}
$parent_id = $post->post_parent;
if ($parent_id) {
wp_safe_redirect(get_permalink($parent_id), 301);
exit;
}
$file_url = wp_get_attachment_url($post->ID);
if ($file_url) {
wp_safe_redirect($file_url, 301);
exit;
}
});Логика простая: если у вложения есть родительская запись, отправляем туда. Если родителя нет, отправляем на сам файл. Это безопаснее, чем оставлять пустую страницу без контекста.
Вариант 3: отключить attachment URL на уровне настроек темы или плагина
Если вы используете SEO-плагин или набор оптимизаций, проверьте, нет ли там готовой функции для редиректа медиа-страниц. Это удобнее, чем писать код вручную, но важно понимать, что именно делает настройка: noindex, 301-редирект или только изменение canonical.
Если вы работаете с кастомной темой или своим набором оптимизаций, код выше остаётся самым предсказуемым вариантом. Он не зависит от интерфейса плагина и не ломается при смене настроек в админке.
Пошаговая схема внедрения
- Соберите список attachment-URL, которые уже есть в индексе, через Search Console и поиск
site:. - Решите, нужен ли вам отдельный URL для вложений. Если нет — выбирайте редирект.
- Добавьте код в
functions.phpдочерней темы или в свой небольшой mu-plugin. - Проверьте, не конфликтует ли редирект с галереями, лайтбоксами и страницами вложений в медиатеке.
- Обновите sitemap и проверьте, не попадают ли туда attachment-страницы.
- Отправьте на переобход несколько URL из Search Console.
Как проверить, что всё сработало
Проверка должна быть не только визуальной. Нужны три уровня контроля.
1. Проверка ответа сервера
Откройте attachment-URL в браузере или через curl и убедитесь, что страница отдаёт нужный статус.
curl -I https://example.com/sample-attachment/Если вы настроили редирект, должен быть 301 и заголовок Location с целевым URL. Если используете noindex без редиректа, страница должна открываться с кодом 200, но в HTML или заголовках должен быть запрет на индексацию.
2. Проверка robots и canonical
Откройте исходный код страницы вложения и посмотрите, нет ли там canonical на саму attachment-страницу, если вы хотите её исключить из индекса. В идеале canonical должен указывать на полезную цель или отсутствовать, если срабатывает редирект.
3. Проверка в Search Console
После переобхода URL проверьте, как Google видит страницу. Если это редирект, в инспекторе URL должен отображаться конечный адрес. Если это noindex, страница должна уйти из индекса после повторного сканирования.
Частые ошибки и как их исправить
Редирект на несуществующую цель
Иногда код отправляет attachment на родительскую запись, но у вложения родителя нет. Тогда пользователь получает цепочку редиректов или 404. Решение простое: всегда делайте запасной маршрут на сам файл, как в примере выше.
Закрыли в robots.txt вместо noindex
Это частая ошибка. Если вы просто запретите обход в robots.txt, поисковик может продолжать держать URL в индексе без контента. Для уже известных страниц это слабое решение. Лучше использовать редирект или noindex.
Сломали медиа-галереи и лайтбоксы
Если тема или плагин рассчитывает на отдельную страницу вложения, агрессивный редирект может мешать. Такое бывает в старых темах и в конструкторах, которые используют attachment URL как часть сценария просмотра изображения. Перед массовым включением проверьте несколько типов контента: записи, галереи, PDF и документы.
Добавили код в родительскую тему
После обновления тема перезапишется, и редирект исчезнет. Для таких правок используйте дочернюю тему или mu-plugin. Это особенно важно, если сайт обновляется регулярно.
Безопасность и производительность
Сам по себе редирект attachment-страниц не нагружает сайт, если код написан аккуратно. Но есть несколько моментов, которые стоит учесть:
- не делайте тяжёлые запросы к базе внутри редиректа;
- не вызывайте лишние функции, если
is_attachment()уже вернулfalse; - не используйте цепочки редиректов 301 -> 302 -> 301;
- проверяйте, что редирект не создаёт петлю на саму attachment-страницу.
Если у вас много технических правок по индексации и дублям, удобнее держать их в одном месте: отдельный mu-plugin или набор настроек в SEO-плагине. Так проще сопровождать сайт и не потерять логику после обновления темы.
Когда лучше не трогать attachment-страницы
Иногда отдельные страницы вложений действительно полезны. Например, если у вас медиа-каталог, архив изображений или проект, где сами файлы являются контентом. В таком случае не стоит бездумно ставить редирект на все вложения подряд. Лучше проверить, какие типы медиа реально нужны пользователю, и закрывать только технический мусор.
Если задача шире и вам нужно системно убирать дубли, чистить архивы и управлять индексированием без ручного кода, можно посмотреть в сторону инструментов вроде Clearfy Pro: у него есть набор функций для технической чистки WordPress и контроля дублей. Но даже с плагином полезно понимать, что именно происходит на уровне URL и ответов сервера.