Если в поиске начали появляться отдельные страницы изображений вида /image-name/ или ?attachment_id=123, это почти всегда страницы вложений WordPress. Они создаются автоматически для каждого загруженного файла и часто дублируют основной контент: на них нет полезного текста, а в индексе они только раздувают количество страниц и мешают нормальной оценке сайта поисковиками.
Решение обычно сводится к двум вариантам: либо закрыть такие URL от индексации, либо сразу перенаправлять их на сам файл или на страницу, где изображение используется. Что выбрать, зависит от того, нужны ли вам эти страницы вообще и есть ли уже трафик на них.
Как понять, что проблема именно в attachment-URL
У WordPress у каждого загруженного изображения может быть отдельная страница вложения. Она открывается по своему адресу и часто выглядит как тонкая страница с одним изображением, без полезного текста и без нормальной навигации. Если тема или плагин не отключают такие страницы, поисковик может их индексировать.
Проверить это можно несколькими способами:
- в поиске по сайту или через оператор
site:ваш-домен.ruнайти URL с названием изображения; - в Google Search Console посмотреть, какие страницы попали в индекс и имеют типичные признаки вложений;
- открыть изображение в медиатеке WordPress и проверить ссылку на страницу вложения;
- посмотреть структуру URL: часто это короткий адрес с названием файла или параметром
attachment_id.
Если в индексе есть именно такие страницы, а не обычные записи или страницы сайта, значит нужно работать с attachment-URL, а не с общей индексацией изображений.
Что лучше: закрыть от индексации или сделать редирект
Для большинства сайтов правильнее не оставлять attachment-страницы доступными как отдельные страницы. Но способ зависит от ситуации.
| Сценарий | Что делать | Когда подходит |
|---|---|---|
| Страницы вложений не нужны вообще | Сделать 301-редирект | Почти всегда, если на них нет трафика и ссылок |
| Нужно сохранить URL, но не индексировать | Добавить noindex | Если по каким-то причинам редирект нежелателен |
| Есть старые ссылки и уже накоплен трафик | Сначала проверить статистику, затем редирект | Если attachment-страницы уже живут в поиске |
Если выбирать между закрытием и редиректом, редирект обычно полезнее: он убирает дубль и не оставляет поисковику лишний URL. Но если у вас есть нестандартная логика в теме или плагинах, сначала проверьте, не используются ли attachment-страницы где-то в шаблонах, хлебных крошках или внутренних ссылках.
Самый надёжный способ: перенаправить страницы вложений
Если отдельные страницы изображений не нужны, их лучше перенаправить на сам файл или на родительскую запись. Для большинства сайтов безопаснее редиректить attachment-страницы на URL изображения, а не на главную. Так пользователь и робот не попадают в тупик.
В WordPress это можно сделать кодом в functions.php дочерней темы или через небольшой mu-plugin. Перед изменениями сделайте резервную копию: ошибка в коде может временно сломать сайт или вызвать белый экран.
Ниже рабочий вариант, который отправляет посетителя со страницы вложения на URL самого файла:
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$url = wp_get_attachment_url( get_queried_object_id() );
if ( $url ) {
wp_redirect( $url, 301 );
exit;
}
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Что здесь важно:
is_attachment()срабатывает только на страницах вложений;wp_get_attachment_url()получает прямую ссылку на файл;wp_redirect(..., 301)делает постоянный редирект, который поисковики понимают как замену старого URL новым;exitнужен, чтобы WordPress не продолжал рендерить страницу после редиректа.
Если вам логичнее отправлять пользователя не на файл, а на запись, к которой прикреплено изображение, можно редиректить на родительский пост. Это имеет смысл, когда attachment-страницы уже попали в поиск и вы хотите передать их вес основной публикации.
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$parent_id = wp_get_post_parent_id( get_queried_object_id() );
if ( $parent_id ) {
wp_redirect( get_permalink( $parent_id ), 301 );
exit;
}
wp_redirect( home_url( '/' ), 301 );
exit;
}
} );Этот вариант удобен, если изображения загружаются в записи и у них есть понятный родитель. Если родителя нет, редирект на главную — запасной вариант, но он хуже, чем редирект на релевантную страницу.
Когда достаточно закрыть attachment-страницы от индексации
Иногда редирект делать не хочется: например, если сайт уже использует attachment-URL в каких-то внешних интеграциях или вы не хотите менять поведение старых ссылок. Тогда можно оставить страницу доступной, но запретить её индексацию.
Самый простой путь — добавить noindex для attachment-страниц через SEO-плагин, если он это умеет. Важно, чтобы тег noindex стоял именно на страницах вложений, а не на всех медиафайлах подряд.
Если вы настраиваете это вручную, можно вывести мета-тег в <head> для attachment-страниц:
add_action( 'wp_head', function () {
if ( is_attachment() ) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
} );Здесь follow оставляет поисковику возможность переходить по ссылкам на странице, но сама страница не должна попадать в индекс. Для attachment-URL это обычно достаточно, если редирект по каким-то причинам не подходит.
Но у этого способа есть ограничение: URL может ещё какое-то время оставаться в индексе, пока поисковик не переобойдёт страницу и не увидит noindex. Если нужно убрать дубли быстрее и чище, редирект предпочтительнее.
Как найти все такие URL на сайте
Перед изменениями полезно понять масштаб проблемы. Не всегда в индекс попадают все attachment-страницы, иногда только часть из них. Проверка помогает не гадать, а закрыть именно то, что реально есть в поиске.
Практически это делается так:
- Откройте Google Search Console и посмотрите отчёт по страницам, которые проиндексированы или исключены.
- Ищите URL с признаками вложений: название файла изображения, короткий адрес без полноценного текста, параметры
attachment_id. - Проверьте внутренний поиск по сайту и результаты
site:доменв поисковике. - Если у вас есть доступ к серверным логам или аналитике, посмотрите, есть ли переходы на такие адреса из поиска.
Если сайт большой, полезно выгрузить список URL из Search Console и отфильтровать строки по словам, связанным с изображениями или вложениями. Это быстрее, чем вручную проверять каждую страницу.
Что проверить после настройки
После редиректа или noindex важно убедиться, что всё работает именно так, как задумано.
- Откройте несколько attachment-URL в браузере и проверьте, куда они ведут.
- Убедитесь, что код ответа действительно
301, а не302или ошибка сервера. - Если вы поставили
noindex, посмотрите исходный код страницы и проверьте наличие мета-тега robots. - В Search Console отправьте URL на повторную проверку, если они уже были в индексе.
Для быстрой проверки редиректа удобно использовать инструменты разработчика браузера или любой HTTP-проверщик. Важно увидеть не только переход, но и именно постоянный редирект, иначе поисковик может продолжить считать старый URL отдельной страницей.
Ошибки, из-за которых дубли остаются
Частая причина, почему проблема не уходит, — редирект настроен только для части URL. Например, страницы вложений перенаправляются, а прямые ссылки на файлы или старые адреса с параметрами продолжают открываться отдельно. Ещё одна типичная ошибка — ставить noindex, но оставлять страницу доступной без редиректа и без очистки внутренних ссылок.
Ещё стоит проверить, не создаёт ли тема отдельные шаблоны для медиафайлов. В некоторых сборках attachment-страница может выглядеть почти как полноценная запись, и тогда поисковик охотнее её индексирует. Если шаблон страницы вложения выводит заголовок, описание и блоки навигации, дубли становятся ещё заметнее.
Если вы используете SEO-плагин, проверьте его настройки для медиа и вложений. Иногда плагин уже умеет отключать attachment-страницы, но эта опция не включена по умолчанию. В таком случае не нужно дублировать решение кодом и в плагине одновременно: выберите один понятный способ и проверьте его работу.
В большинстве случаев для обычного сайта достаточно одного из двух вариантов: 301-редирект со страниц вложений на файл или родительскую запись, либо noindex для тех случаев, когда редирект нежелателен. Если задача именно в том, чтобы убрать дубли из поиска, редирект обычно даёт более чистый результат и проще поддерживается в долгую.