Как убрать страницы вложений – WordPress

Всем привет! Сегодня расскажу как улучшить видимость в поисковиках убрав страницы вложений. Не все знают, но CMS WordPress создаёт отдельные страницы для всех загружаемых медиафайлов – изображений, файлов и пр.
Как следствие эти пустые страницы (например с одной картинкой) появляются в поиске и затрудняют SEO продвижение сайта. Выглядят эти ссылки как правило так – сайт/категория/название поста/attachment/название файла/.
Вот для примера скрин на котором видно что у меня только с одной статьи несколько таких страниц появилось.
Страницы вложений пример
Может быть у кого то иначе – суть от этого не меняется и страницы эти никакой практической пользы не несут, как для посетителей, так и для вебмастера.

Когда я столкнулся с этой проблемой впервые то сразу стал искать способ удалить их или хотя бы скрыть. Но потратив энное количество времени на поиски решения понял что наилучший вариант это установка переадресации на родительскую запись. То есть даже при переходе на одну из таких страниц, например из поиска, читатель не увидит ошибку 404 или что то подобное, а попадёт на статью для которой этот файл и был загружен.
Яндекс со временем из за переадресации всё равно удалит их из поиска, а вот гугл скорее всего так и оставит и благодаря этому все Ваши статьи имеющие вложения будут находиться в поиске по большему количеству запросов. Поэтому с этой точки зрения редиректить на основную запись также будет лучшим решением.
В любом случае если Вы нашли этот пост то вероятно уже знаете что это за страницы вложений и для чего лучше от них избавиться, а поэтому перейду непосредственно к описанию способа. Точнее их два:

Убираем страницы вложений при помощи .htaccess

Это работает насколько мне известно не у всех, но если не хотите редактировать шаблон то можете попробовать. Лично я воспользовался вариантом №2. Итак, чтобы установить редирект с картинок и прочих вложений на родительскую запись нужно в файле .htaccess
прописать следующее:

RewriteRule (.+)/attachment /$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^attachment_id= [NC]
RewriteRule (.*) $1? [R=301,L]

Кстати для вставки кода в текст воспользуйтесь плагином SyntaxHighlighter Evolved – инструкция здесь.

Убираем страницы вложений при помощи functions.php

Это решение лично для меня оказалось удобнее учитывая что способ со .htaccess вообще не сработал)
В файлах Вашего шаблона найдите файл functions.php, кликните по нему и где нибудь внизу вставьте функцию, вот код:

add_action('template_redirect', 'template_redirect_attachment');
 function template_redirect_attachment() {
 global $post;
 // Перенаправление на основную запись:
 if (is_attachment()) {
 wp_redirect(get_permalink($post->post_parent));
 }
 }

Вставлять его необходимо перед закрывающим тегом «?>», если не видите такого то просто в самый конец. После этого нажимаете “Обновить файл”, см. скрин ниже.
Файл функций WordPress
Оба описанных способа несложные, но тем у кого не стоит дочерняя тема советую настраивать через .htaccess дабы не потерять все изменения при ближайшем обновлении темы.
Надеюсь этот короткий пост поможет Вам решить данную проблему 🙂

Понравился блог? Поделись с друзьями ;)

Вам может также понравиться...

1 комментарий

  1. Елена:

    Очень полезно и на простом языке. Попробую сделать самостоятельно

Добавить комментарий для Елена Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *