Если в поиске всплывают пустые страницы изображений и других медиафайлов WordPress, это почти всегда лишний шум. Такие URL обычно не несут самостоятельной пользы: на них есть только файл, короткий заголовок и, иногда, подпись. Для сайта это означает дубли, слабые страницы в индексе и лишние переходы из поиска. Нормальная схема здесь простая: страницы вложений нужно либо закрыть от индексации, либо сразу перенаправлять на родительскую запись, если она есть.
Ниже разберу, как это работает в WordPress, какой вариант выбрать и как настроить редирект без поломки сайта.
Что именно нужно убрать из поиска
В WordPress у каждого загруженного файла может быть отдельная страница вложения. Она открывается по собственному URL и часто выглядит как почти пустая страница с изображением и минимальным текстом. Поисковики могут индексировать такие адреса, особенно если на них ведут внутренние ссылки из медиабиблиотеки, темы или старых материалов.
Проблема не в самих файлах, а в том, что отдельная страница вложения редко конкурирует по смыслу с основной записью. Если пользователь приходит на такой URL из поиска, он обычно не получает контекст статьи, товара или страницы, ради которой файл был загружен. Поэтому для большинства сайтов лучше, чтобы в индексе оставался основной контент, а не медиа-оболочка.
Какой вариант выбрать: закрыть от индексации или сделать редирект
Есть два рабочих подхода, и они решают немного разные задачи.
| Подход | Когда подходит | Что увидит пользователь |
|---|---|---|
| Редирект на родительскую запись | Если у вложения есть связанная статья, страница или товар | Сразу попадёт на основной контент |
| Закрытие от индексации | Если родительской записи нет или она не подходит | Страница останется доступной по прямой ссылке, но не должна попадать в поиск |
На практике чаще используют редирект для вложений, у которых есть родительская запись, и закрытие от индексации для остальных. Это самый аккуратный вариант: поисковик не держит в индексе пустые страницы, а посетитель не упирается в тупиковый URL.
Самый надёжный способ: перенаправлять вложения через код
Если нужен предсказуемый результат без зависимости от плагина, редирект можно добавить в functions.php дочерней темы или через небольшой mu-plugin. Для сайта это безопаснее, чем править ядро или надеяться на случайные настройки темы. Но перед изменениями сделайте резервную копию: ошибка в 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;
}
wp_safe_redirect( home_url( '/' ), 301 );
exit;
} );Что здесь важно:
is_attachment()срабатывает только на страницах вложений.wp_get_post_parent_id()берёт ID родительской записи у текущего вложения.wp_safe_redirect()делает корректный редирект с кодом 301.exit;нужен, чтобы WordPress не продолжал рендерить страницу после перенаправления.
Если вы хотите не отправлять вложения на главную, а просто закрыть их от индексации, редирект на главную лучше не использовать. Для SEO это обычно слабее, чем редирект на релевантный родительский контент.
Как закрыть страницы вложений от индексации
Редирект решает поведение пользователя, но не всегда полностью убирает URL из индекса. Если у вас уже есть старые страницы вложений в поиске, полезно дополнительно закрыть их от индексации. Самый практичный способ — поставить на такие страницы мета-тег noindex через SEO-плагин или код.
Если вы используете SEO-плагин, проверьте, есть ли у него настройка для медиа-страниц или attachment pages. В разных плагинах это называется по-разному, но смысл один: поисковику явно сообщают, что индексировать такие URL не нужно. Это особенно полезно, если часть вложений не имеет родителя и не может быть перенаправлена на полезную страницу.
Если вы не хотите трогать SEO-плагин, можно добавить условную выдачу noindex в шаблон или через хук, но на практике это уже зависит от конкретной темы и набора плагинов. Для большинства сайтов проще и надёжнее использовать штатные настройки SEO-инструмента, а редирект оставить на уровне WordPress.
Когда редирект на родителя не сработает как ожидается
Есть несколько типичных ситуаций, из-за которых вложения продолжают жить своей жизнью:
- у файла нет родительской записи — он был загружен отдельно или родитель удалён;
- тема или плагин уже перехватывает шаблон attachment и показывает собственную страницу;
- поисковик ещё не переобошёл старые URL после изменения правил;
- на сайте есть внутренние ссылки на attachment URL, и они продолжают поддерживать индексацию.
Если родитель удалён, WordPress не сможет честно отправить пользователя на релевантную страницу. В таком случае лучше либо вернуть 404/410 для ненужного вложения, либо отправить его на наиболее близкую по смыслу страницу, если она действительно существует. Автоматически вести всё на главную — не лучший вариант, если таких URL много: для пользователя это выглядит как мягкая ошибка, а не как полезный переход.
Как проверить, что всё работает
После настройки откройте несколько URL вложений вручную и проверьте три вещи:
- страница вложения больше не открывается как отдельный контент;
- при наличии родителя происходит редирект на нужную запись;
- код ответа у редиректа —
301, а не временный302.
Проверить код ответа можно в браузере через инструменты разработчика, через онлайн-проверку заголовков или командой curl, если вам удобнее работать из терминала. Например:
curl -I https://example.com/attachment-page/В ответе ищите строку HTTP/2 301 или HTTP/1.1 301 Moved Permanently и заголовок Location с адресом родительской записи. Если видите цепочку из нескольких редиректов, лучше сократить её до одного шага.
Что делать со старыми URL в поиске
После настройки редиректа поисковики не исчезают мгновенно. Старые страницы вложений могут ещё какое-то время показываться в выдаче, пока робот не переобойдёт сайт и не увидит новый ответ сервера. Это нормально.
Чтобы ускорить обновление, полезно:
- убрать внутренние ссылки на attachment URL, если они где-то остались;
- обновить sitemap, если в него попадали медиа-страницы;
- проверить в панели вебмастера, как поисковик видит старые адреса после переобхода;
- не создавать новые ссылки на страницы вложений в шаблонах и блоках.
Если у вас на сайте много медиа и вы хотите дополнительно подчистить технические дубли, можно посмотреть в сторону инструментов, которые помогают управлять SEO-настройками WordPress и закрывать лишние страницы от индексации. Но сам принцип остаётся тем же: сначала убрать бесполезный URL из индекса, затем направить пользователя на полезный контент.
Коротко о рабочей схеме
Для большинства сайтов правильный порядок такой: страницы вложений с родителем перенаправляются на родительскую запись по 301, а вложения без полезного родителя закрываются от индексации или получают отдельную обработку. Это убирает пустые страницы из поиска и делает поведение сайта понятным для посетителя и поисковых систем.
Если настроить только редирект, но оставить старые ссылки и индексируемые attachment-страницы, часть мусора всё равно останется. Если закрыть только индексацию, пользователь по старому URL всё ещё будет попадать на пустую страницу. Поэтому в реальной работе лучше сочетать оба подхода и проверить результат на нескольких типовых вложениях сразу после внедрения.