Критическая ошибка WordPress

Совсем недавно в статье «Как провести SEO самостоятельно» мы рассмотрели, как избавится от дублей страниц в WordPress. Из этой же статьи мы поняли, что дублирующиеся страницы и битые ссылки могут отрицательно отразится на поисковой оптимизации, а так же продвижении нашего ресурса.

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

Если посмотреть в вебмастере Яндекса. то можно заметить, что:

  • Резко выросло количество загруженных роботом страниц;
  • Структура сайта изменилась. А ведь мы там ничего не меняли;
  • Появилась непонятная директория wp-json с подкатегориями oembed , /1.0/, embed.

Но не стоит пугаться и впадать в панику. Это совсем не вирус, а внедрение разработчиками WordPress нового плагина для удобного доступа к данным Вашего сайта с помощью HTTP RESET API. Подробности Вы можете изучить на странице разработчика http://v2.wp-api.org/.

wp json

И если Вы откроите url http://ваш_сайт/wp-json то наверняка увидите нечто вроде

И так, что такое wp-json? Это не вирус. Это, прежде всего виртуальная директория для API REST для CMS WordPress версии 4.4 и выше. Но к сожалению все служебные папки и URL адреса не скрыты, что соответственно создает дубли. Конечно, они со временем удалятся поисковыми роботами, но это уже не хороший сигнал. Такое количество битых ссылок на сайте присутствовать не должно.

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

Запрещаем индексацию в robots.txt

Прежде всего Вам необходимо в файл robots.txt добавить запрет на индексацию ссылок с wp-json. Для этого добавьте в файл robots.txt строки:

  • Disallow: /wp-json
  • Disallow: /oembed
  • Disallow: /embed

Запрещаем вывод кода в functions.php

Для этого в файле functions.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 );

Выполнив перечисленные выше действия, мы добилиcь лишь того что закрыли от индексации нежелательные ссылки и теперь вместо страшного и непонятного кода перейдя по ссылкам:

  • http://ваш_сайт/wp-json
  • http://ваш_сайт/wp-json/oembed/
  • http://ваш_сайт/wp-json/oembed/1.0/
  • http://ваш_сайт/wp-json/oembed/1.0/embed/

Вы можете наблюдать главную страницу сайта. Кроме того мы избавились от нежелательной ссылки на http://v2.wp-api.org/ в ответе сервера.

И все вроде в порядке, НО!!! Мы получили нежелательные дубли главной страницы сайта. Самое время поправить и этот нюанс.

Создаем 301 редирект

Открываем файл .htaccess который находится в корне вашего сайта. Если его там нет то самое время его создать. И прописываем туда:

RedirectMatch 301 /wp-json http:// ваш_сайт.ру

RedirectMatch 301 /oembed http:// ваш_сайт.ру

RedirectMatch 301 /embed http:// ваш_сайт.ру

RedirectMatch 301 /1.0/ http:// ваш_сайт.ру

Естественно заменив ваш_сайт.ру на свой домен и радуемся жизни.

Теперь все запросы по нежелательным ссылкам будут переадресовываться через 301 редирект на главную страницу Вашего сайта. Это будет актуально особенно для тех, чьи сайты уже успели обзавестись в поисковой выдаче нежелательными ссылками с wp-json.

Через несколько обновлений базы дублирующие страницы будут удалены из поисковых баз.

Для тех, кто не любит копаться в коде сайта существует альтернатива — плагин CLEARFY. Плагин платный, но он сделает всю работу за вас.

Вас могут заинтересовать:

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

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