Вопрос или проблема
Как можно деактивировать wp-json и перенаправить URL на страницу 404 без использования плагинов. Каждый раз, когда кто-то вызывает example.com/wp-json
, он перенаправляется на страницу 404 вместо загрузки?
Я пытался сделать это через htaccess, но это не работает. Есть ли возможное решение, пожалуйста?
Сработает ли добавление этого в functions.php?
add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');
Добавьте этот фрагмент в ваш файл wp-includes/functions.php
add_filter( 'rest_authentication_errors', 'wp_snippet_disable_rest_api' );
function wp_snippet_disable_rest_api( $access ) {
return new WP_Error( 'rest_disabled', __('API REST для WordPress отключен.'), array( 'status' => rest_authorization_required_code()));
}
.
Ответ или решение
Чтобы отключить доступ к REST API в WordPress и перенаправить запросы к /wp-json
на страницу 404 без использования плагинов, существуют несколько эффективных подходов. Этот процесс требует внесения изменений в файлы вашей темы или ядро WordPress. Ниже представлены шаги, которые помогут достичь этой цели.
Шаг 1: Отключение REST API через functions.php
Первый метод включает добавление фильтров в файл functions.php
вашей активной темы. Это простой и эффективный способ отключить REST API:
// Отключаем REST API
add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');
// Отключаем доступ к REST API и возвращаем ошибку
add_filter('rest_authentication_errors', 'disable_rest_api');
function disable_rest_api($access) {
return new WP_Error('rest_disabled', __('REST API отключен.'), array('status' => 403));
}
Этот код делает следующее:
- Отключает JSON API (первоначальную реализацию REST).
- Возвращает ошибку 403 (запрещено) при любом доступе к REST API.
Шаг 2: Перенаправление запросов на страницу 404
Теперь, чтобы перенаправить запросы к /wp-json
на страницу 404, вы можете использовать следующий код:
add_action('template_redirect', 'redirect_wp_json');
function redirect_wp_json() {
if (strpos($_SERVER['REQUEST_URI'], '/wp-json') !== false) {
// Устанавливаем заголовки для 404
status_header(404);
nocache_headers();
include(get_404_template());
exit();
}
}
Этот код использует хуки шаблонов WordPress, чтобы проверить, содержит ли запрашиваемый URL /wp-json
. Если это так, он устанавливает заголовок 404 и отображает страницу ошибки.
Шаг 3: Проверка работы
После добавления вышеуказанных кодов в ваш файл functions.php
, выполните следующие действия для проверки:
- Откройте веб-браузер.
- Введите URL
example.com/wp-json
. - Убедитесь, что он перенаправляет вас на страницу 404.
Заключение
Используя представленные методы, вы сможете успешно отключить и скрыть доступ к REST API без установки дополнительных плагинов. Это решение также способствует улучшению безопасности вашего сайта, предотвращая нежелательные вызовы к API. Пожалуйста, важно заметить, что при внесении изменений в functions.php
, необходимо создать резервные копии вашего сайта, чтобы избежать возможных ошибок.
Следуя этой инструкции, вы сможете контролировать доступ к важным функциям WordPress, что является неотъемлемой частью управления безопасностью вашего сайта.