Проблема с attachment-страницами в WordPress обычно всплывает не сразу: сайт уже работает, изображения загружены, а в индексе поисковиков появляются отдельные страницы вложений с пустым или почти пустым контентом. Для небольших сайтов это просто мусор в индексе, для контентных — ещё и источник дублей, лишних переходов и путаницы в аналитике.
Ниже разберём, как безопасно отключить такие страницы из архивов и индекса, не ломая саму медиа-библиотеку и не теряя прямые ссылки на файлы.
Что именно нужно отключать и где возникает проблема
В WordPress у каждого загруженного файла может быть собственная attachment-страница. Это не сам файл изображения, а отдельная запись типа attachment с URL вроде /image-name/ или похожим на него. Если тема или плагин выводят ссылку на attachment-страницу вместо файла, пользователь кликает не на картинку, а на пустую страницу вложения.
Типичный сценарий выглядит так:
- в записи или на странице есть изображение;
- картинка ведёт не на файл, а на attachment-страницу;
- поисковик индексирует эти страницы как отдельные URL;
- в отчётах появляются дубли и страницы с низкой ценностью;
- часть трафика уходит на бесполезные URL.
Как понять, что проблема у вас есть
Проверка занимает пару минут. Откройте несколько изображений на сайте и посмотрите, куда ведёт клик. Если открывается отдельная страница вложения, а не сам файл или lightbox, это уже повод проверить настройки темы и плагинов.
Дополнительно посмотрите:
- отчёт по индексированию в Google Search Console;
- список URL с типом
attachmentв поиске по сайту; - исходный код страницы: нет ли у изображений ссылки на attachment-URL;
- нет ли в sitemap лишних URL вложений.
Как отключить attachment-страницы: рабочие варианты
Есть три практических подхода: редиректить attachment-страницы на файл или родительскую запись, закрыть их от индексации и убрать ссылки на них в теме. В большинстве случаев нужен не один, а сразу два уровня защиты: редирект + корректная ссылка на изображение.
| Подход | Что делает | Минус |
|---|---|---|
| Плагин SEO/очистки | Отключает attachment-страницы или ставит редирект | Зависит от настроек и версии плагина |
| Код в теме или mu-plugin | Даёт точный контроль над редиректом и ссылками | Нужно аккуратно тестировать после обновлений |
| Только noindex | Снижает шанс попадания в индекс | Страница всё ещё доступна и может обходиться ботами |
Вариант 1: редирект attachment-страниц на файл или родительскую запись
Если вам не нужны отдельные страницы вложений, самый надёжный путь — сделать 301-редирект. Для изображений это обычно безопасно: пользователь попадает либо на сам файл, либо на запись, где картинка была опубликована.
<?php
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$post = get_queried_object();
if (!$post || empty($post->ID)) {
return;
}
$parent_id = wp_get_post_parent_id($post->ID);
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;
}
wp_safe_redirect(home_url('/'), 301);
exit;
});Этот код лучше размещать в небольшом mu-plugin, а не в functions.php, если тема часто обновляется. Так правило не потеряется после смены шаблона.
Вариант 2: убрать attachment-URL из ссылок на изображения
Даже если редирект уже есть, лучше не создавать лишние ссылки на attachment-страницы. WordPress позволяет фильтровать HTML изображения и подменять ссылку на файл.
<?php
add_filter('wp_get_attachment_link', function ($html, $id, $size, $permalink, $icon, $text) {
if (!$permalink) {
return $html;
}
$url = wp_get_attachment_url($id);
if (!$url) {
return $html;
}
return preg_replace('/href=["\"][^"\"]+["\"]/', 'href="' . esc_url($url) . '"', $html, 1);
}, 10, 6);Это не универсальная панацея: некоторые галереи, page builder'ы и lightbox-плагины строят разметку по-своему. Но для стандартных вставок в контенте такой подход помогает убрать лишние attachment-переходы.
Вариант 3: закрыть вложения от индексации
Если вы не хотите полностью отключать attachment-страницы, их можно хотя бы убрать из индекса. Это полезно, когда на сайте есть старые URL, которые уже разошлись по внешним ссылкам, и резкий редирект нежелателен.
Для этого проверьте, что SEO-плагин не генерирует для attachment-страниц индексируемые мета-теги и не добавляет их в sitemap. Если плагин умеет управлять типом записей attachment, используйте его штатные настройки. Если нет — лучше редирект, чем полумера.
Пошаговая настройка без лишнего риска
- Сделайте резервную копию базы и файлов.
- Проверьте, есть ли у вас отдельные URL attachment-страниц в индексе.
- Решите, куда вести редирект: на родительскую запись или на сам файл.
- Добавьте редирект через mu-plugin или в дочернюю тему.
- Проверьте, не ломаются ли галереи, lightbox и блоки редактора.
- Уберите внутренние ссылки на attachment-страницы, если они есть.
- Переобойдите сайт краулером и посмотрите, не осталось ли 200-ответов на attachment-URL.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте attachment-URL напрямую и убедитесь, что сервер отдаёт 301, а не 200. Для этого удобно использовать curl:
curl -I https://example.com/sample-image/В ответе должен быть статус 301 Moved Permanently и заголовок Location с новым адресом.
После этого проверьте ещё несколько вещей:
- изображения в контенте открываются по ожидаемому адресу;
- в sitemap нет attachment-URL;
- в Search Console снижается число проиндексированных страниц вложений;
- внутренние ссылки на attachment-страницы больше не появляются в краулере;
- страницы записей не потеряли изображения и не получили битые ссылки.
Частые ошибки и как их исправить
Редирект сделан, но attachment-страницы всё ещё индексируются
Это нормально в краткосрочной перспективе: поисковику нужно время на переобход. Если редирект стоит, а старые URL всё ещё видны в отчётах, проверьте, что ответ действительно 301, а не 302 или цепочка из нескольких переходов.
После редиректа сломались галереи или lightbox
Чаще всего причина в том, что тема или плагин ожидали именно attachment-страницу. Тогда нужно не убирать редирект, а изменить настройку галереи: пусть клик ведёт на файл изображения или открывает его в модальном окне. Если плагин жёстко привязан к attachment-URL, лучше обновить его или заменить.
Все вложения ведут на главную
Это плохой запасной вариант. Он скрывает проблему, но создаёт нерелевантный редирект. Пользователь и бот попадают на главную, хотя искали конкретный файл или запись. Если у вложения нет родителя, безопаснее редиректить на сам файл, а не на главную.
Сломались старые внешние ссылки
Если на attachment-страницы уже ссылаются другие сайты, резкий редирект на файл обычно менее болезненный, чем на главную. Но если URL использовался как отдельная страница с описанием, проверьте логи и аналитику: возможно, для части вложений нужен индивидуальный маршрут, а не единое правило.
Практические советы по безопасности и производительности
Не ставьте редирект через тяжёлые плагины, если задача простая. Один короткий mu-plugin надёжнее, чем ещё один слой логики в админке. Это особенно важно на сайтах, где уже есть SEO-плагин, кэш, оптимизация изображений и page builder.
Если у вас много медиафайлов, проверьте, как правило работает с кэшем. После внедрения редиректа очистите кэш страниц и, если используется CDN, сбросьте и его. Иначе вы можете смотреть на старую версию attachment-страницы и думать, что код не сработал.
Для сайтов, где важна чистка дублей и техническая SEO-гигиена, иногда удобнее закрывать такие задачи через набор инструментов вроде Clearfy Pro: он помогает убрать часть мусорных URL и настроек без ручной правки каждого шаблона. Но даже в этом случае полезно понимать, что именно происходит на уровне редиректа и индексации.
Когда лучше не отключать attachment-страницы полностью
Есть исключения. Если у вас фотогалерея, портфолио или медиа-каталог, attachment-страницы могут быть частью структуры сайта. В таком случае их не стоит массово глушить без проверки сценариев. Сначала посмотрите, используются ли они как посадочные страницы, есть ли на них текст, хлебные крошки, связанные материалы и входящий трафик.
Если attachment-страницы реально нужны, оставьте их, но приведите в порядок:
- добавьте уникальный заголовок и описание;
- уберите пустые шаблоны;
- проверьте canonical;
- не допускайте дублирующих URL на один и тот же файл.
В остальных случаях attachment-страницы — это технический шум, который проще и безопаснее убрать, чем потом разбирать в индексе и аналитике.