Меню

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

Страницы вложений attachment

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

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

Кстати, именно по причине борьбы с такими дублями и выбрала в настройках постоянных ссылок вид "/%category%/%postname%"
который позволял работать редиректу, потому что в URL'е вложений располагалось нужное "attachment"...

Замечу, что другие сайты спокойно существуют, не обращая внимание на эту проблему. Дело в том, что если не убирать в настройках изображения ссылку на медиафайл, такие дубли не попадают в индекс. А вот если убрать, поисковики их индексируют. Во всяком случае, в дополнительном индексе гугла их становится полным-полно... Вот такая загадка.

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

Простой способ отключить это безобразие

Но вернемся к решению задачи. Оказалось, что в установленной теме вообще отсутствовал файл attachment.php. Его пришлось создать (совсем пустой), залить в папку с темой. А в 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));
}
}

Все, после этих простых действий страницы вложений не открываются! Желаю всем успешного продвижения )

Оставить комментарий
  1. Здравствуй Надежда!
    Я рад, что ты наконец вернулась в блоггинг! Спасибо тебе за полезную рекомендацию (удаление дублей вложений медиафайлов) и за пожелание.

    • Здравствуй, Алексей! Да, нет ничего более постоянного чем временное. На время отложила работу над блогом... и затянулась пауза на несколько месяцев. Рада видеть тебя!

  2. Из-за редиректа проблем с индексаций изображений нет?

    • Проблем нет конечно: это же не адрес изображений редиректится, а страница отдельная для медиафайла...

  3. По идее движки должны облегчать жизнь. На практике блогер обречён вникать в принципы и нюансы работы CMS.

  4. Ура! С возвращением. А мы тут плюшкам баловались пока Вас не было. :)
    А если серьезно, то Надежда, Вы же знаете что я меньше всего обращаю внимания на эти дубли страницы и прочую лабуду.

    • Тут серьезный вопрос, сильно мешающий продвижению, Андрей! Обращать внимание на это следует обязательно, если хотите успеха своему ресурсу.

  5. Надежда, но не умею я серьезно, без юмора скучно жить, так что простите, но я не исправим :)
    А с успехами блога мы даст бог разберемся.

  6. Прошу прощения, а что было прописано в стандартном файле .htaccess? Стандартные настройки WordPress не справляются?
    Плюс, есть неплохой плагин - Download Monitor, который позволяет улучшить некоторый функционал для загружаемых файлов.

    Честно, я в сео, конечно, относительный ламер, но объясните мне, чем неудобна ссылка на аттач той же картинки вида: frozenpath.ru/wp-content/uploads/2015/10/age-of-wonders-1.jpg если к ней прописаны тайтл и альт?

    Несколько раз перечитал, так и не понял в чем проблема. При выборе того же "/%category%/%postname%" отлично работают стандартные правила .htaccess для WordPress default и в чем заключается проблема в аттачах и зачем еще нужно описываемое правило в записи. Объясните?

    • Здравствуйте, Дмитрий! Ссылка, которую Вы указали, это ссылка на файл (кстати, выдает ошибку 404), а не на страницу вложения. Если с этим не бороться (проблема страниц вложений), появляются дубли страниц. Имея в статье несколько картинок, вы получите столько же дублей. И стандартные настройки, повторюсь, спасают, если оставлять как есть (то есть ссылка: медиафайл). Но тогда вес страницы уходит на файлы картинок. Мне лично это не нравится (как и ненужная кликабельность картинки). Надеюсь, объяснила понятно... Вот поэтому и пришлось искать нестандартное решение.

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

  8. Еще вопрос, в в functions.php вы где прописываете этот код. Я лишний раз в этой файл не лезу... уже направила там, что кое-что пришлось возвращать назад..

    • Можно в самом конце, перед закрывающим тегом "?>". Этот способ описан для тех случаев, когда редиректы не работают, прописанные в файле .htaccess

  9. К моему сожалению, я после установки шаблона и движка WP не создала файл .htaccess, а теперь его создавать не смысла, поэтому будем обходиться иными методами.

  10. Мне уже пояснили, что сайт будет работать некорректно...

    • Странно. Еще не слышала о таком. Ну может такие особенности Вашей темы, я не специалист в общем-то. Удачи в решении вопросов с дублями, Елена!

  11. Надежда, добрый вечер! Какую Вы серьезную тему подняли, причем уже давно. А я только сейчас вот задумался над этим.

    Надежда, скажите, пожалуйста, у меня на блоге отображается картинка по адресу: http://text-center.ru/otdyh-2016-minimalnye-tseny/putevka_250x250/.

    Я правильно понимаю, что это и есть страница вложения? Только URL этой страницы не содержит attachment. В этом случае у меня код, которые Вы советуете разместить в functions.php, не будет работать?

    Извиняюсь за вопрос, просто вся эта проблема для меня возникла только что)

    • Здравствуйте, Сергей! Как раз наоборот, если есть attachment в адресе, с этими дублями легко бороться с помощью редиректа. А код предложенный как раз помог мне убрать такие дубли на сайте, где организация URL как у Вас.

  12. То есть я тоже могу этот код в functions.php вставить? Я попробую)

    • Сергей, будьте внимательны! В статье написано, что в моей теме не было файла attachment.php, я его создала и совершенно пустой закачала в папку с темой. Если файла не будет, можете поломать свой сайт.

  13. Да, Надежда, я понял, что нужно создать этот файл и оставить его пустым, правильно? У меня тоже нет этого файла в теме.

  14. Благодарю Вас)

  15. Здравствуйте, Надежда. Подскажите, а редирект спасёт от попадания этих страниц вложений в индекс ПС. А то сейчас они у меня индексируются как и обычные страницы.

    • Здравствуйте, Дмитрий! Конечно, для этих целей он и придуман. Только нужно использовать 301 редирект.

  16. Спасибо за быстрый ответ! Буду делать 301 редирект.

  17. Здравствуйте. Я тоже избавлялся от страниц вложения таким способом. Но недавно обнаружил что в карте сайта (в гуглмастере) куча страниц вида http://сайт.ru/?attachment_id= (Причем если кликаешь на них пишетследующее: Сайт ........... выполнил переадресацию слишком много раз. Появилась мысль, чтоб закрыть это безобразие, прописать в файле роботс ....Disallow: /*/?attachment_id=* Как думаете есть смысл, или есть другой вариант решения проблемы?

    • Здравствуйте, Станислав! Запрет в роботсе ничего не даст, роботы все равно будут все скачивать, а гугл просто добавит в дополнительный индекс. Если у вас циклическая переадресация, значит что-то сделали не так. Описанный способ полностью "убивает" дубли вложений (использовать нужно только 301 редирект, указывающий поисковику, что "страница перемещена навсегда").

  18. Спасибо за ответ. Еще такой вопрос. Вчера обнаружил что в файле attachment у меня был вбит следующий код: post_parent), 301);
    ?> А в файле Function написанного вами кода не было. Видимо я что то перепутал) Мне получается из файла attachment удалить код и оставить его пустым, а в файл Function в самый низ добавить указанный вами код? Спасибо.

    • Да, Станислав, сделайте как у меня в статье написано, у меня этот метод сработал.

  19. Спасибо за статью. Заработало только когда изменил код

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

    здесь вместо строчки с направлением на родителя
    //wp_redirect(get_permalink($post->post_parent));
    стало перенаправлять просто на главную
    wp_redirect( home_url() );

    иначе было циклическое 302. видимо функции поменялись с новой версией wp

  20. Отлично! Спасибо большое, очень помогло

  21. Здравствуйте. Создал пустой файл attachment.php Залил в в functions.php Ваш код. РАБОТАЕТ! Спасибо. Дополнительно что-то надо прописывать для уже проиндексированных страниц, которые исчезли /larg09876 , html/case и т.д..?

    • Здравствуйте! Прописывать ничего не надо, со временем из индекса уйдет весь мусор.

  22. С wordpress особо не работаю, сегодня попросили подобные глюки поправить на одном сайте.

    Переадресация циклическая срабатывает, если медиафайл не прикреплен к публикации. Удалили публикацию например, а файл остался.

    Если медиафайл не прикреплен, перенаправляю не 404 страницу

    function template_redirect_attachment() {
    global $post;
    if (is_attachment()) {
    if (isset($post->post_parent) && $post->post_parent!=0){
    wp_redirect(get_permalink($post->post_parent));
    } else {
    global $wp_query;
    $wp_query->set_404();
    status_header( 404 );
    get_template_part( 404 );
    exit();
    }
    }
    }

  23. Добрый день! Спасибо за статью, все получается с картинками, а вот с архивами и pdf нет, там ссылка бкз attachmen. Ссылки на файлы имеют вид http://audio-cxem.ru/stk402-070_plata, сделал редирект на главную (помогло и для файлов pdf, rar) с помощью кода взятого из комментария, но хотелось бы редирект на запись, как в вашем коде, как можно организовать такой код?

  24. Добрый день!
    Все сделал как вы посоветовали, и все работает, но у меня получился 302 редирект, как это исправить? Как сделать 301?

  25. Здравствуйте.
    Это действительно рабочий способ, спасибо вам за статью!
    Хочу так же спросить о другого рода дублях: дубли в категориях (когда одна и та же статья, расположенная в нескольких категориях, открывается по разным адресам, хотя в поиске присутствует только основной URL).
    Можно ли как-то сделать перенаправление, чтобы статья открывалась только по основному адресу (и неважно из какой категории мы на нее попадаем)?
    Пыталась искать ответ на просторах интернета, но ничего вразумительного не нашла(((
    Буду благодарна вам за ответ!

    • Здравствуйте, Ося! Дело в том, что в случае переадресации Вам нет смысла располагать статью в разных рубриках. А чтобы не было дублей, нужно изначально исключить из слага (адреса, URL) частичку "категория". Это делается в настройках Вордпресс - "Постоянные ссылки" - выбираем "Название записи". Помните, что при смене настроек все URL поменяются, хорошенько взвесьте все "за" и "против".
      Настройки

  26. Спасибо! Буду пробовать.

Здесь вы можете оставить отзыв

* Текст комментария
* Обязательные для заполнения поля

Внимание: все отзывы проходят модерацию.