Как убрать архивы вложений в WordPress и перенаправить их на запись

Страницы вложений в WordPress часто создаются автоматически, но на большинстве сайтов они не несут пользы: на них почти нет контента, а поисковики могут индексировать такие URL как отдельные страницы. В результате появляются тонкие дубли, которые размывают качество индексации и иногда отнимают трафик у основной записи или страницы с изображением.

Если у вас есть медиафайлы в библиотеке WordPress, задача обычно сводится к двум действиям: отключить архивы вложений как отдельные страницы и настроить редирект со старых URL на более полезный адрес — чаще всего на родительскую запись, а если её нет, на сам файл изображения или другой медиафайл.

Что такое архив вложения и почему его лучше убрать

Когда вы загружаете изображение, PDF или другой файл в медиабиблиотеку, WordPress создаёт для него отдельную страницу вложения. У такой страницы есть собственный URL, например /image-name/ или /attachment/image-name/ — точный вид зависит от структуры постоянных ссылок и темы. На этой странице может отображаться только сам файл, заголовок и немного метаданных.

Проблема в том, что для SEO это почти всегда слабая страница:

  • контента мало или нет совсем;
  • часто она дублирует изображение, уже встроенное в запись;
  • поисковик может выбрать её вместо основной статьи, если не помочь ему с канонизацией и редиректами;
  • на больших сайтах такие URL создают лишний мусор в индексе.

Если вложение не должно жить как отдельная страница, лучше сразу отправлять пользователя и поискового робота туда, где файл реально используется.

Какой вариант перенаправления выбрать

Есть три практических сценария, и выбор зависит от того, как у вас устроен контент.

СитуацияКуда перенаправлятьКогда подходит
У вложения есть родительская записьНа запись или страницу, к которой прикреплён файлЛучший вариант для большинства сайтов
Файл используется отдельно, без родителяНа сам файлЕсли нужен прямой доступ к изображению, PDF или архиву
Вложения вообще не нужны как отдельные URLНа главную, архив рубрики или другой релевантный разделЕсли на сайте много старых вложений без смысла

Для SEO обычно самый безопасный вариант — редирект на родительскую запись, если она есть. Так пользователь попадает в контекст, а не на пустую страницу файла. Если родителя нет, можно отправлять на сам файл, чтобы не ломать прямые ссылки на медиа.

Самый простой способ: отключить архивы вложений через код

Если вам нужен надёжный и предсказуемый результат, проще всего добавить небольшой код в functions.php дочерней темы или в собственный мини-плагин. Не вносите такие правки в файл родительской темы: после обновления они пропадут.

Сначала сделайте резервную копию сайта или хотя бы файла, который редактируете. Ошибка в PHP-коде может временно уронить сайт, поэтому действуйте аккуратно.

Этот вариант отключает страницу вложения и перенаправляет её на родительскую запись, если она есть. Если родителя нет, пользователь попадёт на сам файл.

add_action( 'template_redirect', function () {
	if ( ! is_attachment() ) {
		return;
	}

	$parent_id = wp_get_post_parent_id( get_queried_object_id() );

	if ( $parent_id ) {
		wp_safe_redirect( get_permalink( $parent_id ), 301 );
		exit;
	}

	$file_url = wp_get_attachment_url( get_queried_object_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_safe_redirect() делает безопасный редирект с кодом 301;
  • exit; завершает выполнение, чтобы WordPress не успел вывести саму страницу вложения.

Код работает на обычной установке WordPress без специальных плагинов. Если у вас очень жёстко настроен кэш или редиректы на уровне сервера, проверьте, не конфликтует ли этот код с ними.

Если нужно просто отключить вложения в SEO-плагине

На многих сайтах удобнее не править код, а использовать SEO-плагин, который умеет автоматически перенаправлять attachment pages. Это особенно полезно, если вы не хотите поддерживать собственный фрагмент кода и вам достаточно стандартного поведения.

Смысл настройки тот же: страницы вложений перестают открываться как отдельные документы, а старые URL отправляются на более полезный адрес. После включения такой опции всё равно стоит проверить несколько вложений вручную, потому что плагины по-разному обрабатывают случаи без родителя.

Если вы уже используете инструменты для чистки дублей и технической SEO-настройки, можно посмотреть в сторону Clearfy Pro. Но даже в этом случае важно понимать логику редиректа и не включать настройку вслепую: на сайте с нестандартной структурой медиа лучше сначала проверить, куда именно будут вести старые URL.

Как убрать архивы вложений через файл functions.php без лишнего риска

Если вы редактируете тему вручную, делайте это через дочернюю тему или через небольшой собственный плагин. Так вы не потеряете изменения после обновления.

  1. Откройте functions.php дочерней темы.
  2. Добавьте код редиректа в конец файла.
  3. Сохраните изменения.
  4. Очистите кэш сайта, если он есть.
  5. Проверьте несколько URL вложений в браузере.

Если на сайте используется серверный кэш, CDN или плагин кэширования, старые страницы могут ещё какое-то время открываться из кэша. В таком случае обязательно очищайте кэш после правки.

Как проверить, что всё работает правильно

После настройки откройте в браузере несколько старых URL вложений. Нормальный результат выглядит так:

  • страница вложения не открывается как отдельный контент;
  • браузер сразу переводит вас на запись, если у файла есть родитель;
  • если родителя нет, открывается сам файл или другой выбранный адрес;
  • код ответа редиректа — 301, а не 302.

Проверить код ответа можно через инструменты разработчика браузера, онлайн-проверку редиректов или командой curl, если вам удобно работать из консоли. Например:

curl -I https://example.com/attachment-page/

В ответе ищите строку HTTP/1.1 301 Moved Permanently или аналогичную для вашего сервера. Если вместо редиректа вы видите 200 OK, значит страница вложения всё ещё открывается как обычная.

Что делать со старыми URL в индексе

После настройки редиректа поисковики не удаляют старые адреса мгновенно. Это нормально: им нужно переобойти страницы и увидеть новый ответ сервера. Если редирект настроен корректно, со временем старые URL выпадут из индекса или будут заменены на целевые адреса.

Чтобы ускорить процесс, полезно:

  • обновить sitemap, если он содержит лишние attachment URL;
  • проверить внутренние ссылки в контенте, чтобы они вели сразу на нужные страницы;
  • не оставлять открытыми новые вложения, если они не нужны как отдельные страницы.

Если на сайте уже накопилось много таких URL, не удаляйте их вручную без редиректа. Для SEO это хуже: пользователь и робот получат 404, а не понятный переход на релевантную страницу.

Когда не стоит перенаправлять вложение на запись

Редирект на родительскую запись подходит не всегда. Есть несколько случаев, когда лучше выбрать другой адрес:

  • вложение используется в нескольких местах, и у него нет одного очевидного родителя;
  • файл — это самостоятельный документ, который должен открываться напрямую;
  • на сайте есть старые внешние ссылки на конкретный медиафайл, и их нельзя ломать;
  • редирект на запись будет уводить пользователя слишком далеко от нужного файла.

В таких случаях лучше перенаправлять на сам файл или на релевантную страницу раздела, а не на первую попавшуюся запись. Смысл редиректа — не просто убрать архив, а отправить пользователя туда, где он действительно найдёт нужную информацию.

Если кратко: для большинства сайтов достаточно отключить attachment pages и настроить 301-редирект на родительскую запись. Это убирает тонкие страницы, сокращает дубли и делает структуру сайта чище для поисковиков и пользователей. Главное — после настройки проверить несколько URL вручную и убедиться, что редирект не ломает доступ к нужным файлам.

⭐⭐⭐⭐⭐