Дубли 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, хотя до этого было всего пару сотен, естественно мне стало интересно, что это такое, что за херь.
Естественно мне стало очень интересно, что же там появилось, я до этого редактировал конечно robots.txt и чистил другие, дубли, о них я расскажу потом, но чтобы их было 9000, это не реально.
Щелкаем по Документ защищен в файле robots.txt
У вас отобразиться график, где вы сможете точно увидеть, когда был скачок и со сколки он стартовал.
Ниже вы увидите, список заблокированных странниц, начиная их изучать, я наткнулся на тьму ссылок wp json oembed
При попытке перейти по любой из них, меня перекидывало на xml страницу определенного поста, вопрос какого это вообще тут делает. Переходим в Структуру сайта и видим, что у нас есть какая то виртуальная папка wp-json > oembed > 1.0 > embed? в размере 4000, хорошо, что у меня на всякий такой случай в роботсе есть правило, не дающее это индексировать и оно в Яндекс не попало в индекс, но он его честно загрузил, потратив время, которое мог потратить на что то более полезное, на моем ресурсе. Давайте разбираться, что это за призрак wp json oembed 1.0
Что такое 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. В принципе в коде описано, что делает каждый кусок.
И сам код, скачать его можно в текстовом файле.
// Отключаем сам 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='/wp-json/' /> и как следствие, у вас пропадет создание страниц wp json oembed 1.0 embed и вы удалите уже созданные, не забудьте запретить у себя в файле robots.txt данные страницы от индекса, чтобы быть подготовленным от таких косяков со стороны WordPress, если у вас в индексе уже, что то есть, то ждем пере индексации. И следите постоянно, хотя бы раз в неделю, в кабинете яндекса или гугла, на предмет новых данных. Уверен вы удалите свои wp json oembed мусорные страницы.
попал под фильтр Яндекса своим сайтом _ttp://jkeks.ru, и совпало это событие с тем что перед эти много тысяч wp-json влезло в индекс. Самое удивительное что все они в индексе сидят себе спокойно.. То люди загнать не могут страницы, аддурилки всякие делают, а тут дак само залезло и норм. Автору спасибо, заходи почитать наши SEO Дайджесты.. _ttp://seo-today.ru
Да Яшка очень специфичный поисковик, я думаю после нескольких апов у вас дубли пропадут в выдаче.
Благодарю за статью, Игорь. Поделился на всех своих аккаунтах в социальных сетях: крайне нужная информация!
Спасибо за лайки, рад что помог.
Добрый день!
После изменения файла functions.php по рекомендациям в статье, у сайта исчезла карта sitemap.xml. Её генерирует плагин Google XML Sitemaps. Но «мусорные» ссылки тоже исчезли…
Загрузил старую версию файла functions.php — карта снова появилась.
Что сделал не так?
В моем примере карта работает, каким методом вы проверяли что ее нет?
Спасибо, полет нормальный
Всё сделал как написали, в итоге теперь куча страничек 404 что делать не подскажете?
Закрывать их в файле robots.txt, чтобы поисковики их в индекс не закидывали и сделать редирект 301, с этих отсутствующих страниц на нужную, потом после пары обновлений поисковой базы можно убрать редиректы. А так же советую настроить канонические адреса на сайте
Всё сделал как вы написали не помогло,как лезли такие странички так и лезут.Есть ещё какое нибудь решение?
да можете купить плагин Clearfy
А как сделать, чтоб эти страницы с wp-json нормально редиректились на главную ( чтобы открывалась именно главная)?
руками не вариант, т.к. таких страниц мильен
а смысл в этом, вы лучше их закройте от индекса, они от туда вылетят если попали и все.
Добрый вечер! То же такая проблема с 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: /*?* Не совсем понял, от какого вида ссылок он спасает.
Подскажите пожалуйста
wp json oembed, я же привел пример из яндекс кабинета
По поводу кода выше на три строки. Добавив его, в коде страниц json и oembed перестали отображаться.
Кажется понял (по поводу Disallow: /*?*), это будут запрещены к индексации ссылки начинающиеся с знака»?»
Все верно вы поняли, а еще могу посоветовать платный плагин Clearfy
Попробовал ваш большой код, при переходе по ссылкам oembed из Яндекс вебмастер все же переадресовывает на главную блога. (на том что я нашел — ссылки убирает из кода, но не переадресовывает с уже существующих страниц Oembed). Но адрес url после после переадресации практически как и в панели Яндекс вебмастер (скрин imger.ru/jpg/mu9I2uEx9C9TiFsM/) Странно переадресовывает.
Посмотрел — полезный плагин. Немного неудобно, что ответы на комментарии не идут на почту — чудом увидел ваш ответ. Вполне хороший плагин Subscribe to Comments Reloaded, правда дублей добавляет, но их можно убрать редиректами.
Шикарный сайт, добавил в закладки.