Лично мне всё это понадобилось из-за постоянных скачков нагрузки. Как сообщила техподдержка хостера, в периоды подобных нагрузок производится автоматическое ограничение ресурсов, с целью предотвратить дестабилизацию работы сервера. Наблюдалось очень большое количество обращений к файлам /wp-json/oembed/1.0/embed
и xmlrpc.php
.
С последним рекомендовали добавить в файл .htaccess следующие директивы:
<Files xmlrpc.php> Order allow,deny Deny from all </Files>
Кроме того, посоветовали увеличить интервал индексации для поисковых ботов в файле robots.txt с помощью директивы:
User-agent: * Crawl-delay: 60
Инструкция от Яндекс здесь. Интервал индексации для поисковых систем Google настраивается через панель web-мастера.
Как полностью отключить REST API введенный в WP 4.4
Нужно удалить все фильтры REST API и отключить сам API. Для этого поместите следующий код в файл 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 ); remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); // если собираетесь выводить вставки из других сайтов на своем, то закомментируйте след. строку. remove_action( 'wp_head', 'wp_oembed_add_host_js' );
Фильтры хранятся в этом файле.
П.С. Еще есть плагин для отключения REST API.
А также, есть плагин по этой же теме, который отключает возможность встраивать ваши записи на другом блоге — oembed. Называется Disable Embeds. Некоторые строки из отключения oembed используются в коде выше, потому что они косвенно связаны с REST API.
Как отключить XML-RPC
Для тех, кто не знает, что такое XML-RPC — это WordPress API, позволяющий (удалённо) выводить, создавать, редактировать и удалять:
- посты,
- таксономии (рубрики, метки и прочее),
- медиафайлы,
- комментарии,
- пользователей.
А также получать доступ к настройкам и изменять их.
Именно благодаря этому API работают различные приложения для iPhone, iPad и устройств на Android.
Так вот, в предыдущих версиях WordPress была вот такая штука в настройках:
Как известно, от «атома» WordPress отказался полностью, а протокол XML-RPC теперь установлен включенным по умолчанию.
Дело в том, что раньше протокол содержал некоторые уязвимости, а теперь их все залатали.
Для параноиков (я и сам такой) — чтобы отключить XML-RPC, вставляем этот код в functions.php:
add_filter('xmlrpc_enabled', '__return_false');
Мне вот например не приходится пользоваться приложениями для iOS или Android, я пробовал конечно — ну вообще не понравилось, так что этот протокол мне ни к чему.
Удаляем метатеги с xmlrpc.php из head сайта
Насколько я знаю, существует два метатега:
<link rel="EditURI" />
(RSD) и <link rel="pingback" />
.
Первый удаляется достаточно просто — хуком на wp_head
. Чтобы удалить второй, вам скорее всего придётся открыть файл header.php в вашей теме и вручную удалить его из HTML-кода. (В теме вашего сайта этих тегов может и не быть.)
Комментарии (0)