Если в поиске уже есть URL вида /attachment/ или страницы медиафайлов открываются как отдельные страницы, просто «закрыть архивы» недостаточно. Старые адреса продолжат отдавать 200 OK, попадать в индекс и собирать мусорный трафик. В нормальном сценарии страницы вложений нужно либо отключить и перенаправить на сам файл, либо отправлять на родительскую запись, если это логичнее для пользователя и SEO.
Ниже разберём, когда какой вариант выбирать, как отключить страницы вложений в WordPress и что сделать с уже существующими URL, чтобы не получить битые страницы и цепочки редиректов.
Что именно нужно отключать
В WordPress у каждого медиафайла может быть отдельная страница вложения. Это не сам файл изображения, PDF или видео, а отдельная страница записи вложения с собственным URL. Обычно она выглядит как страница с заголовком, изображением и минимальным шаблонным контентом темы.
Проблема в том, что такие страницы часто не несут пользы пользователю: на них нет контента, кроме самого файла, а поисковик может воспринимать их как дубли или тонкие страницы. Если сайт давно работает, у вас уже могут быть проиндексированы сотни таких URL. Поэтому задача состоит из двух частей:
- отключить генерацию или показ страниц вложений для новых переходов;
- корректно обработать старые адреса, чтобы они вели на нужную цель.
Какой вариант перенаправления выбрать
Есть два безопасных сценария, и выбор зависит от того, как у вас устроен контент.
| Сценарий | Куда редиректить | Когда подходит |
|---|---|---|
| Медиа само по себе полезно | На сам файл | Если пользователь должен сразу открыть изображение, PDF, архив или другой файл без промежуточной страницы |
| Медиа связано с записью | На родительскую запись | Если вложение было загружено в пост, страницу товара или статью и логичнее вернуть посетителя к основному материалу |
Для SEO чаще выбирают редирект на родительскую запись, если она действительно существует и соответствует содержанию вложения. Но если вложение используется как самостоятельный файл, например для скачивания, перенаправление на сам файл обычно понятнее.
Не стоит отправлять все вложения на главную страницу. Это выглядит как мягкая ошибка, ухудшает поведение пользователя и часто не решает SEO-проблему корректно.
Отключение страниц вложений через редирект в functions.php или плагине
Самый прямой способ — перехватить запрос к странице вложения и отправить пользователя на нужный адрес. Такой вариант работает на уровне WordPress и не зависит от того, есть ли у вас отдельный SEO-плагин.
Перед изменениями сделайте резервную копию сайта или хотя бы файла темы, если будете править functions.php. Ошибка в коде может временно сломать сайт.
Ниже пример, который перенаправляет страницу вложения на родительскую запись, а если родителя нет — на сам файл:
add_action('template_redirect', function () {
if (!is_attachment()) {
return;
}
$attachment_id = get_queried_object_id();
$parent_id = wp_get_post_parent_id($attachment_id);
if ($parent_id) {
wp_safe_redirect(get_permalink($parent_id), 301);
exit;
}
$file_url = wp_get_attachment_url($attachment_id);
if ($file_url) {
wp_safe_redirect($file_url, 301);
exit;
}
wp_safe_redirect(home_url('/'), 301);
exit;
});Что здесь важно:
is_attachment()срабатывает только на странице вложения, а не на самом файле;wp_get_post_parent_id()возвращает ID родительской записи, если вложение к ней привязано;wp_get_attachment_url()даёт прямой URL файла;wp_safe_redirect()безопаснее обычногоheader(), потому что WordPress проверяет допустимость адреса.
Если вы не хотите править тему, лучше вынести этот код в небольшой mu-plugin или в собственный функциональный плагин. Тогда редирект не исчезнет после обновления темы.
Как отключить вложения через SEO-плагин
Если на сайте уже стоит SEO-плагин, проверьте, нет ли в нём отдельной опции для перенаправления attachment pages. У популярных SEO-решений такая функция обычно есть, и это удобнее, чем писать код вручную.
Плюс этого подхода в том, что он проще для поддержки: настройка живёт в админке, а не в теме. Минус — не все плагины одинаково обрабатывают старые URL. Иногда они просто отключают доступ к новым страницам вложений, но не всегда решают вопрос с уже проиндексированными адресами так, как вам нужно.
Если в плагине есть выбор между редиректом на файл и на родительскую запись, ориентируйтесь на структуру сайта. Для фотогалерей, портфолио и статей с иллюстрациями обычно удобнее редирект на запись. Для медиа-библиотеки с файлами для скачивания — на сам файл.
Что делать с уже существующими URL в индексе
Это ключевой момент. Если просто отключить страницы вложений в настройках темы или плагина, старые адреса могут начать отдавать 404. Для SEO это хуже, чем корректный 301-редирект: поисковику нужно понять, куда перенесён контент, а пользователю — не упереться в пустую страницу.
Проверьте несколько старых URL из поисковой выдачи или из отчёта сканера сайта:
- откройте страницу вложения в браузере;
- убедитесь, что она отвечает 301, а не 200;
- проверьте, что конечный адрес действительно полезен: файл открывается, запись существует, нет цепочки из двух-трёх редиректов;
- посмотрите, не ведёт ли редирект на несуществующий родительский пост.
Если у вложений нет родителя, заранее решите, что важнее: отправлять их на файл или на главную. Для большинства сайтов безопаснее именно файл, потому что это хотя бы сохраняет смысл URL и не маскирует проблему.
Как проверить, что всё работает правильно
После настройки откройте несколько старых адресов вложений вручную и проверьте код ответа. Если у вас есть доступ к консоли, можно использовать curl:
curl -I https://example.com/attachment-url/В ответе должен быть статус 301 Moved Permanently или другой постоянный редирект, а в заголовке Location — целевой URL. Если видите 200 OK, значит страница вложения всё ещё открывается как обычная страница. Если 404, редирект не сработал или цель недоступна.
Ещё один практический тест — открыть страницу вложения из внутренней ссылки на сайте. Если тема или редактор когда-то вставляли ссылку именно на attachment page, она тоже должна вести на корректный адрес без промежуточной ошибки.
Типичные ошибки, из-за которых появляются битые страницы
Чаще всего проблема возникает не в самом редиректе, а в его реализации.
- Редирект ставят только в SEO-плагине, но не проверяют старые URL. В итоге новые вложения не индексируются, а старые продолжают жить своей жизнью.
- Вместо 301 используют 302. Для постоянного переноса это слабый вариант: поисковику сложнее понять, что адрес изменён надолго.
- Все вложения отправляют на главную. Это плохая замена содержательной странице и часто выглядит как техническая заглушка.
- Редирект ведёт на несуществующий родительский пост. Такое бывает после удаления записи, к которой было прикреплено вложение.
- Код добавляют в тему, а потом обновляют её. После обновления редирект исчезает, и старые URL снова начинают открываться.
Когда лучше оставить страницу вложения, а не отключать её
Полностью отключать attachment pages не всегда обязательно. Если у вас медиа-страницы оформлены осмысленно, содержат дополнительный текст, описание, навигацию и реально полезны пользователю, их можно оставить. Но это уже отдельный сценарий, и он требует нормального шаблона, а не стандартной пустой страницы вложения WordPress.
Для большинства обычных сайтов, особенно если медиа просто прикрепляется к статьям, отключение страниц вложений и редирект на файл или запись — более безопасный и понятный вариант. Он убирает лишние URL из индекса и не ломает старые ссылки.
Если нужен короткий практический вывод: сначала решите, куда должен вести старый адрес вложения, затем настройте постоянный 301-редирект, и только после этого проверяйте индексацию и внутренние ссылки. Так вы закроете проблему без потери трафика и без битых страниц.