Ошибка WP REST API 404 Not Found — одна из тех, с которыми часто сталкиваются разработчики и администраторы сайтов на WordPress. REST API — важный компонент для современных сайтов и плагинов, обеспечивающий обмен данными между клиентом и сервером. Когда при обращении к endpoint API вы получаете ошибку 404, это обычно означает, что маршрут не найден, и это может серьезно нарушить работу сайта и интеграций.
Что такое WP REST API и почему возникает ошибка 404 Not Found
WP REST API — это интерфейс для взаимодействия с WordPress через HTTP-запросы. Он используется для получения, создания, обновления и удаления данных (постов, пользователей, настроек и др.). Ошибка 404 говорит о том, что сервер не нашел запрашиваемый ресурс.
Основные причины ошибки 404 для WP REST API:
- Неправильные настройки постоянных ссылок (Permalinks)
- Конфликты с плагинами или темами, блокирующими REST API
- Отсутствие необходимых прав доступа или ошибок в механизме авторизации
- Проблемы с .htaccess или серверными правилами переписывания URL
- Отключение REST API вручную или плагинами безопасности
Проверка и настройка постоянных ссылок для устранения ошибки 404 REST API
Самая частая причина ошибки 404 — некорректные настройки постоянных ссылок. WordPress использует правила перезаписи для API-запросов, и если они сбиты, API не работает.
Чтобы проверить и исправить:
- Перейдите в админку WordPress в раздел Настройки → Постоянные ссылки.
- Просто нажмите кнопку Сохранить изменения без изменения настроек. Это пересоздаст правила .htaccess.
- Проверьте, что на сервере включен модуль
mod_rewrite(для Apache) или аналог для Nginx.
Если вы используете Nginx, убедитесь, что в конфигурации прописаны правила для работы с пермалинками и REST API.
Использование плагинов для диагностики и восстановления REST API
Для диагностики и восстановления работы REST API можно использовать специальные плагины:
- REST API Log — помогает логировать запросы и смотреть, какие именно вызывают ошибки.
- Disable REST API — иногда полезно временно отключить и заново включить REST API для устранения конфликтов.
- Clearfy Pro — мощный инструмент для оптимизации и устранения конфликтов, включая управление REST API.
Пример кода для проверки доступности REST API в теме или плагине
function wperror_check_rest_api() {
$response = wp_remote_get( rest_url( '/wp/v2/posts' ) );
if ( is_wp_error( $response ) ) {
error_log( 'WP REST API error: ' . $response->get_error_message() );
return false;
}
if ( wp_remote_retrieve_response_code( $response ) != 200 ) {
error_log( 'WP REST API returned status: ' . wp_remote_retrieve_response_code( $response ) );
return false;
}
return true;
}
Этот код можно добавить в файл functions.php вашей темы для базовой проверки доступности REST API и записи ошибок в лог.
Обработка конфликтов с плагинами и темами, блокирующими WP REST API
Многие плагины безопасности или оптимизации могут блокировать REST API, чтобы ограничить доступ и повысить безопасность. Однако это приводит к ошибкам 404 при обращении к API.
Для выявления конфликтов:
- Отключите все плагины, кроме основных, и проверьте работу REST API.
- Если проблема исчезла, включайте плагины по одному, чтобы найти виновника.
- Особое внимание уделите плагинам безопасности (Wordfence, iThemes Security), кэширования и оптимизации.
Пример исключения блокировки REST API в Wordfence:
add_filter('wordfence_allow_rest_api', '__return_true');
Этот фильтр разрешит работу REST API, если Wordfence его блокирует.
Исправление проблем с правами доступа и nonce для REST API 404
REST API защищён системой прав и nonce, чтобы предотвратить несанкционированные запросы. Если при обращении к API вы получаете 404, возможно, проблема связана с неверными правами.
Для проверки и исправления можно добавить в functions.php следующий фильтр, который временно позволит доступ к REST API всем пользователям (использовать с осторожностью):
add_filter( 'rest_authentication_errors', function( $result ) {
if ( ! empty( $result ) ) {
return $result;
}
return true;
});
Также стоит проверить, что ваш запрос содержит корректный nonce, если это требуется, и что пользователь имеет нужные права.
Настройка и проверка .htaccess или конфигурации сервера для REST API 404
Если веб-сервер не обрабатывает правила перезаписи корректно, REST API будет выдавать 404.
Для Apache в корне сайта должен быть файл .htaccess с содержимым примерно такого вида:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Для Nginx в конфигурации должен быть блок location, который передаёт запросы в index.php, например:
location / {
try_files $uri $uri/ /index.php?$args;
}
Без этих правил REST API и другие маршруты WordPress не будут работать.
Дополнительные советы и инструменты для поддержки WP REST API
Для удобства работы с REST API можно использовать плагины и инструменты, которые помогут отладить, протестировать и расширить функционал:
- WPGPT — плагин с расширенными возможностями работы с API и автоматизацией задач.
- Postman или Insomnia — внешние инструменты для тестирования API-запросов.
- WP-CLI команды для работы с REST API и кэшированием.
Также стоит регулярно проверять логи сервера и ошибок WordPress, чтобы оперативно выявлять проблемы.