Как отключить wp-json?
Опубликовано: 01.09.2018
После последнего обновления Яндекса я совершенно случайно обнаружил, что у меня на сайте в индексе появилась ТЫСЯЧА новых страниц! Я не мог написать столько статей за пару недель между АПами и поэтому это было НЕНОРМАЛЬНО.
Как удалить Wp json и oEmbed коды на сайте WordPress
Яндекс Вебмастер показывал мне источник проблемы - раздел /wp-json/ на сайте. Но на практике такой папки на сайте не оказалось, и я понял, что придется попотеть.
У меня уже был опыт с удалением дорвеев , которые мне заливали на сайты злобные хакеры, и тут я подумал, что опять мне кто-то подсунул какую-то гадость.
Ошибки wp-json в индексе Яндексе Wordpress 4.4 (мусорные страницы)
При заходе на адрес https://prostolinux.ru/wp-json я получал страницу с таким кодом:
{"name":"\u041f\u0440\u043e LINUX, SOFT \u0438 HARDWARE.","description":"\u041f\u0440\u043e\u0441\u0442\u043e \u043e Linux, SEO \u0438 FOREX.","url":"http:\/\/prostolinux.ru","namespaces":["oembed\/1.0"],"authentication":[],"routes":{"\/":{"namespace":"","methods":["GET"],"endpoints":[{"methods":["GET"],"args":{"context":{"required":false,"default":"view"}}}],"_links":{"self":"http:\/\/prostolinux.ru\/wp-json\/"}},"\/oembed\/1.0":{"namespace":"oembed\/1.0","methods":["GET"],"endpoints":[{"methods":["GET"],"args":{"namespace":{"required":false,"default":"oembed\/1.0"},"context":{"required":false,"default":"view"}}}],"_links":{"self":"http:\/\/prostolinux.ru\/wp-json\/oembed\/1.0"}},"\/oembed\/1.0\/embed":{"namespace":"oembed\/1.0","methods":["GET"],"endpoints":[{"methods":["GET"],"args":{"url":{"required":true},"format":{"required":false,"default":"json"},"maxwidth":{"required":false,"default":600}}}],"_links":{"self":"http:\/\/prostolinux.ru\/wp-json\/oembed\/1.0\/embed"}}},"_links":{"help":[{"href":"http:\/\/v2.wp-api.org\/"}]}}В эту страницу была вложена другая и так более 1000 страниц как то насобиралось. Хорошо, что Яндекс не успел их проиндексировать, а он бы это сделал, так как у него в индексе уже полно таких сайтов с такими мусорными страницами:
Но как это Яндекс так быстро нашел все эти страницы? Оказалось все просто: в шапке сайта (посмотрел исходный код страницы, в header.php этого нет) болтались три замечательные ссылки на всю эту ерунду, да еще и с картой XML для ЛУЧШЕГО индексирования!
<link rel='https://api.w.org/' href='https://prostolinux.ru/wp-json/' /> <link rel="alternate" type="application/json+oembed" href="https://prostolinux.ru/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fprostolinux.ru%2F" /> <link rel="alternate" type="text/xml+oembed" href="https://prostolinux.ru/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fprostolinux.ru%2F&format=xml" />Как удалить ссылки link rel?
Первое, на что у меня хватило ума - это удалить эти ссылки. Для этого в function.php прописал немного кода. Нашел это на англоязычном сайте, там уже пошла паника по этому поводу и кто-то предложил такой способ решения проблемы:
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); remove_action( 'wp_head', 'rest_output_link_wp_head' ); remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );Но проблема до конца не была решена, хотя ссылки пропали, сами виртуальные страницы остались. Немного покопавшись в интернете я нашел решение этого вопроса у одного известного блогера .
WP-json что это?
Как оказалось, проблема была в новой версии WordPress. Начиная в версии 4.4 они ввели новый API REST, который наплодил у всех кучу мусорных страниц в виртуальной директории wp-json.
Решить вопрос можно просто, отключив опять же все это через function.php, добавив туда кучу кода:
// Отключаем сам 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 );Все, теперь все мусорные страницы исчезли и если зайти по любому из этих адресов, то нас перебросит на главную страницу сайта. (Для большей точности скопируйте код лучше отсюда )
Как оказалось, я только этот сайт обновил до версии 4.4 и поэтому у других моих проектов таких проблем нет. Я пока не буду их обновлять и вам не советую, а если вы уже это сделали, то добавьте приведенный в статье код в function.php, чтобы избежать проблем.
Еще очень полезно установить на сайт три плагина: Disable WordPress Core Updates, Disable WordPress Plugin Updates и Disable Theme Updates.
Как вы поняли из этой статьи, береженого берегут эти плагины и изучение Яндекс Вебмастера после каждого АПа....
ВНИМАНИЕ : Полное отрубание wp-jons отключает некоторые функции плагинов, например, в SEO YOAST, так как что лучше всего закрывать просто в robots.txt
СОВЕТ ВЕБМАСТЕРУ: Умение зарабатывать в интернете - это только пол дела, вторая половина - это умение ВЫГОДНО обналичивать электронные деньги. Вот список офшорных банковских карт, на которые можно выводить средства и потом снимать с них хрустящие купюры:
1. Epayments - можно открыть счет в долларах, евро и рублях. Формально банка нет, юридический адрес в Лондоне, но можно получить реквизиты банка в Латвии.
2. AdvCash - Офшорный банк находится в Белизе, можно открыть счет в долларах, евро, фунтах и рублях.
3. Payeer - Штаб квартира этой платежной системы находится в Грузии, тут так же можно открыть счет в долларах, евро и рублях.
4. Capitalist - Можно создать счета в долларах, евро и рублях. Низкие тарифы на вывод. Компания зарегистрирована в юрисдикции Британских Виргинских Островов.
Во всех случаях можно заказать банковскую карту, которую пришлют вам по обычной почте. Активируете ее и идете снимать деньги банкомат! Тарифы смотрите на сайтах платежных систем.