WPTips

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

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

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

Что именно нужно убрать и почему одной настройки часто недостаточно

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

Здесь важно разделить две задачи:

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

Если сделать только редирект, но оставить страницы доступными для индексации, поисковик всё равно может какое-то время видеть их в выдаче. Если только закрыть от индексации, но не настроить редирект, пользователь по старым ссылкам будет попадать на слабую страницу. Поэтому лучше закрывать обе проблемы сразу.

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

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

Перед изменениями сделайте резервную копию файлов и базы. Если на сайте уже есть трафик на страницы вложений, редирект меняет поведение URL, поэтому лучше проверить его на staging-копии или хотя бы в часы низкой нагрузки.

Ниже код, который перенаправляет вложение на родительскую запись, а если родителя нет — на главную страницу сайта:

add_action( 'template_redirect', function () {
    if ( is_attachment() ) {
        $parent_id = wp_get_post_parent_id( get_the_ID() );

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

        wp_safe_redirect( home_url( '/' ), 301 );
        exit;
    }
} );

Что делает этот код:

  • is_attachment() срабатывает только на страницах вложений;
  • wp_get_post_parent_id() берёт ID родительской записи;
  • wp_safe_redirect() отправляет постоянный редирект 301;
  • exit завершает выполнение, чтобы WordPress не продолжал рендерить страницу.

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

Как закрыть страницы вложений от индексации

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

Через SEO-плагин

Если на сайте уже стоит SEO-плагин, проверьте, есть ли в нём настройка для медиа-страниц или attachment URLs. У некоторых решений можно отключить индексацию вложений и автоматически перенаправлять их на родительскую запись. Это удобнее, чем править код, если вы не хотите поддерживать собственный фрагмент.

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

Через мета-тег noindex

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

Поэтому на практике noindex стоит рассматривать как дополнительную меру, а не как замену перенаправлению.

Если нужен только код без плагинов

Иногда на сайте лишний плагин не нужен, а задача сводится к одному правилу. Тогда можно обойтись кодом выше и дополнительно убедиться, что страницы вложений не попадают в XML-карту сайта. В стандартном WordPress attachment-страницы обычно не должны быть в sitemap, но это зависит от темы, SEO-плагина и того, как настроена генерация карты сайта.

Если вы используете собственную логику вывода robots.txt или мета-тегов, не пытайтесь закрывать вложения только через Disallow в robots.txt. Это не убирает URL из индекса само по себе. Поисковик может знать о странице по внешним ссылкам или внутренним переходам, даже если не сможет её сканировать. Для удаления слабых страниц из поиска нужен именно редирект или noindex, а не только запрет обхода.

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

После настройки откройте несколько URL вложений вручную. Проверять нужно не только страницу с картинкой, но и разные сценарии:

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

Что вы должны увидеть:

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

Проверить код ответа можно через инструменты разработчика в браузере, онлайн-проверку заголовков или командой curl -I https://example.com/attachment-url/. Если в ответе нет 301, значит редирект не сработал или его перехватывает другой плагин, тема либо серверное правило.

Какие ошибки встречаются чаще всего

На практике проблемы обычно возникают не в самом редиректе, а в деталях:

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

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

Что выбрать на практике

СитуацияЧто делатьКомментарий
Нужен быстрый и надёжный результатРедирект 301 на родительскую записьЛучший вариант для большинства сайтов
Есть SEO-плагин с настройкой медиаВключить его обработку вложений и проверить редиректПодходит, если плагин реально закрывает обе задачи
Вложений много, родителя нетРедирект на главную или на релевантный разделЛучше по возможности пересмотреть структуру контента
Нужно только убрать из индексаДобавить noindexНо пользователь всё равно может открыть страницу

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

×
Твой WordPress — твои правила!

Топовые темы и плагины со скидкой 20%.

Забрать выгодно ⋙