Дубли wp json oembed в WordPress 4.4

Дубли wp json oembed в WordPress 4.4

Дубли wp json oembed в WordPress 4.4

Всем привет, сегодня хочу поделиться опытом, удаления новых дублей у движка WordPress 4.4, а именно wp json oembed страницы, вы я даже уверен не знаете, что они есть, и если у вас до этого в robots.txt не было нужного правила, то вы в Яндексе сильно нагадили, он весь этот мусор схавал и не поперхнулся. Ниже смотрим последствия и как их решить.

Последствия дублей страниц

Как всем известно поисковики, не очень любят дубли страниц, почему, да тут все просто:

  • много одного и того же контента по разным адресам > как следствие сложно было понять, какая страница та самая, а какие это мусор. Усложняется поиск релевантного контента.
  • тратятся дополнительные мощности роботов индексирующих сайты, увеличивается время индексирования, требуется больше самих серверов и их мощностей

Конечно поисковики думают о пользователе и заинтересованы, чтобы все было гладко. По этой причине они например создали тег canonical, который говорит поисковой машине какой из адресов является основным, а остальные дубли, тем самым упрощая процедуру индексирования, но если у вас все равно много дублей, и вы их не закрыли от индексации, поисковик их загрузит, потратив тем самым вашу квоту на индексацию, да представьте она есть, и для каждого сайта она своя, и если робот не успел, за отведенное ему время все обойти это ваши проблемы, и может получиться, что мусор он увидит, а до нужного и нормального не дойдет. Вывод, чистим все лишнее. К сожалению, многие CMS движки, грешат всякими дублями в силу своей специфики работы, но это не означает, что вы не должны это исправлять. Ранее я вам уже рассказывал про один тип дублей replytocom, и рассказал как от них избавиться, сегодняшний враг новый, я о нем случайно узнал и имя ему wp json oembed.

Неизвестные страницы wp json oembed 1.0 embed

И так одним зимним и морозным вечером, зайдя в веб мастер Яшки, я прифигел, что у меня в заблокированных файлах содержимого моего сайта, красовалась цифра в 9000, хотя до этого было всего пару сотен, естественно мне стало интересно, что это такое, что за херь.

Дубли wp json oembed в WordPress 4.4-01

Естественно мне стало очень интересно, что же там появилось, я до этого редактировал конечно robots.txt и чистил другие, дубли, о них я расскажу потом, но чтобы их было 9000, это не реально.

Щелкаем по Документ защищен в файле robots.txt

Дубли wp json oembed в WordPress 4.4-02

У вас отобразиться график, где вы сможете точно увидеть, когда был скачок и со сколки он стартовал.

Дубли wp json oembed в WordPress 4.4-03

Ниже вы увидите, список заблокированных странниц, начиная их изучать, я наткнулся на тьму ссылок wp json oembed

Дубли wp json oembed в WordPress 4.4-04

При попытке перейти по любой из них, меня перекидывало на xml страницу определенного поста, вопрос какого это вообще тут делает. Переходим в Структуру сайта и видим, что у нас есть какая то виртуальная папка wp-json > oembed > 1.0 > embed? в размере 4000, хорошо, что у меня на всякий такой случай в роботсе есть правило, не дающее это индексировать и оно в Яндекс не попало в индекс, но он его честно загрузил, потратив время, которое мог потратить на что то более полезное, на моем ресурсе. Давайте разбираться, что это за призрак wp json oembed 1.0

Дубли wp json oembed в WordPress 4.4-05

Что такое wp json oembed 1.0

wp json это привет от новый версии WordPress 4.4. Именно с нее начинается эта эпопея, разработчики ввели там новый API REST,который наплодил у всех кучу мусорных страниц в виртуальной директории wp-json.

Это виртуальная директория для API REST у WordPress версии 4.4 и выше. WordPress REST API – это общий интерфейс данных и программирования, который позволяет считывать и записывать информацию в WordPress через разные приложения. Теперь разработчикам, которые нацелены на работу с WordPress, не понадобится углубленно разбираться в WP.

Удаляем wp json oembed 1.0 embed

Для удаления wp json oembed 1.0 embed мы будем использовать код, который вам нужно будет вставить в файл functions.php. Для этого вам необходимо зайти на ftp сервер с вашим сайтом, если не знаете как то ссылка слева вам в помощь. Напомню, что сделайте копию данного файла, мало ли что. Можно конечно сделать редактирование этого файла ,через кабинет WordPress, но если, что то пойдет не так вы сломаете сайт и вам в итоге, так же придется лезть на ftp сервер. Куда в functions.php вставлять этот код, по идее куда угодно, единственное, чтобы у вас это было до знака ?>, который чаще всего идет в конце, у меня в шаблоне в файле изначально, были помечены разные части кода поэтому я вставил вот так, идет до комментариев Footer widgets. В принципе в коде описано, что делает каждый кусок.

Удаляем wp json oembed 1.0 embed

И сам код, скачать его можно в текстовом файле.

// Отключаем сам REST API
add_filter('rest_enabled', '__return_false');

// Отключаем фильтры REST API
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
remove_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );
remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );
remove_action( 'auth_cookie_malformed', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_expired', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_valid', 'rest_cookie_collect_status' );
remove_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );

// Отключаем события REST API
remove_action( 'init', 'rest_api_init' );
remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
remove_action( 'parse_request', 'rest_api_loaded' );

// Отключаем Embeds связанные с REST API
remove_action( 'rest_api_init', 'wp_oembed_register_route');
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );

remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

В итоге вы удалите из кода строку

<link rel='https://api.w.org/' href='http://pyatilistnik.org/wp-json/' /> и как следствие, у вас пропадет создание страниц wp json oembed 1.0 embed и вы удалите уже созданные, не забудьте запретить у себя в файле robots.txt данные страницы от индекса, чтобы быть подготовленным от таких косяков со стороны WordPress, если у вас в индексе уже, что то есть, то ждем пере индексации. И следите постоянно, хотя бы раз в неделю, в кабинете яндекса или гугла, на предмет новых данных. Уверен вы удалите свои wp json oembed мусорные страницы.

19 Responses to Дубли wp json oembed в WordPress 4.4

  1. jkeks:

    попал под фильтр Яндекса своим сайтом _ttp://jkeks.ru, и совпало это событие с тем что перед эти много тысяч wp-json влезло в индекс. Самое удивительное что все они в индексе сидят себе спокойно.. То люди загнать не могут страницы, аддурилки всякие делают, а тут дак само залезло и норм. Автору спасибо, заходи почитать наши SEO Дайджесты.. _ttp://seo-today.ru

  2. Иван Семин:

    Да Яшка очень специфичный поисковик, я думаю после нескольких апов у вас дубли пропадут в выдаче.

  3. Андрей:

    Благодарю за статью, Игорь. Поделился на всех своих аккаунтах в социальных сетях: крайне нужная информация!

  4. Иван Семин:

    Спасибо за лайки, рад что помог.

  5. Валерий:

    Добрый день!
    После изменения файла functions.php по рекомендациям в статье, у сайта исчезла карта sitemap.xml. Её генерирует плагин Google XML Sitemaps. Но «мусорные» ссылки тоже исчезли…
    Загрузил старую версию файла functions.php — карта снова появилась.
    Что сделал не так?

  6. Иван Семин:

    В моем примере карта работает, каким методом вы проверяли что ее нет?

  7. Ops:

    Спасибо, полет нормальный

  8. Антон:

    Всё сделал как написали, в итоге теперь куча страничек 404 что делать не подскажете?

  9. Иван Семин:

    Закрывать их в файле robots.txt, чтобы поисковики их в индекс не закидывали и сделать редирект 301, с этих отсутствующих страниц на нужную, потом после пары обновлений поисковой базы можно убрать редиректы. А так же советую настроить канонические адреса на сайте

  10. Антон:

    Всё сделал как вы написали не помогло,как лезли такие странички так и лезут.Есть ещё какое нибудь решение?

  11. Иван Семин:

    да можете купить плагин Clearfy

  12. Тимур:

    А как сделать, чтоб эти страницы с wp-json нормально редиректились на главную ( чтобы открывалась именно главная)?
    руками не вариант, т.к. таких страниц мильен

  13. Иван Семин:

    а смысл в этом, вы лучше их закройте от индекса, они от туда вылетят если попали и все.

  14. Илья:

    Добрый вечер! То же такая проблема с json. Не знаете в чем отличие данного кода?
    /* Отключение API Rest */
    remove_action( ‘wp_head’, ‘rest_output_link_wp_head’);
    remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’);
    remove_action( ‘template_redirect’, ‘rest_output_link_header’, 11, 0 );

    По вашему совету добавил в robots Disallow: /*?* Не совсем понял, от какого вида ссылок он спасает.
    Подскажите пожалуйста

  15. Иван Семин:

    wp json oembed, я же привел пример из яндекс кабинета

  16. Илья:

    По поводу кода выше на три строки. Добавив его, в коде страниц json и oembed перестали отображаться.

    Кажется понял (по поводу Disallow: /*?*), это будут запрещены к индексации ссылки начинающиеся с знака»?»

  17. Иван Семин:

    Все верно вы поняли, а еще могу посоветовать платный плагин Clearfy

  18. Илья:

    Попробовал ваш большой код, при переходе по ссылкам oembed из Яндекс вебмастер все же переадресовывает на главную блога. (на том что я нашел — ссылки убирает из кода, но не переадресовывает с уже существующих страниц Oembed). Но адрес url после после переадресации практически как и в панели Яндекс вебмастер (скрин imger.ru/jpg/mu9I2uEx9C9TiFsM/) Странно переадресовывает.

    Посмотрел — полезный плагин. Немного неудобно, что ответы на комментарии не идут на почту — чудом увидел ваш ответ. Вполне хороший плагин Subscribe to Comments Reloaded, правда дублей добавляет, но их можно убрать редиректами.

  19. Carrollrhymn:

    Шикарный сайт, добавил в закладки.

Добавить комментарий

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

я в гугл