405 Method Not Allowed: что это за ошибка и как исправить на WordPress
Ошибка 405 Method Not Allowed — одна из тех HTTP-ошибок, которые ставят в тупик даже опытных пользователей WordPress. Браузер показывает пустую страницу или сообщение «405 Not Allowed», а сайт отказывается выполнять запрос. Разберёмся, что означает эта ошибка, почему она возникает и как её исправить раз и навсегда.
Что означает ошибка 405 Method Not Allowed
HTTP-протокол определяет несколько методов запроса (или глаголов): GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS и другие. Каждый из них предназначен для своего типа операции:
- GET — получить страницу или ресурс (чтение)
- POST — отправить данные (отправка формы, комментарий)
- PUT / PATCH — обновить существующий ресурс
- DELETE — удалить ресурс
- HEAD — получить только заголовки ответа
- OPTIONS — узнать, какие методы поддерживает сервер
Ошибка 405 Method Not Allowed возникает, когда сервер понимает запрос, но запрещает использование конкретного HTTP-метода для этого URL. Сервер как бы говорит: «URL существует, но так к нему обращаться нельзя».
Важное отличие от 404 (Not Found): при 404 ресурс не найден вообще, а при 405 — ресурс есть, но метод не разрешён.
Типичные сценарии на WordPress
1. REST API (wp-json) возвращает 405
Самый частый случай. WordPress активно использует REST API для работы админки, редактора блоков (Gutenberg) и многих плагинов. Если REST API отвечает 405, сайт может:
- Не открывать редактор записей («Редактор не загрузился»)
- Не сохранять изменения в настройках
- Не загружать медиафайлы через медиабиблиотеку
- Показывать ошибки при работе плагинов конструкторов страниц (Elementor, WPBakery)
Пример: при попытке сохранить запись браузер отправляет POST-запрос на /wp-json/wp/v2/posts/123, а сервер отвечает 405.
2. Формы на сайте (Contact Form 7, Gravity Forms)
Плагины форм отправляют данные методом POST. Если веб-сервер или плагин кэширования блокирует POST-запросы, пользователь видит ошибку при отправке формы.
3. AJAX-запросы (admin-ajax.php)
Многие плагины используют wp-admin/admin-ajax.php для фоновых операций. Если POST-запрос к этому файлу отклоняется, функциональность ломается: лайки, подписки, фильтры товаров.
4. Плагины кэширования и WAF (Cloudflare, Sucuri)
Файрволы и CDN могут блокировать нестандартные методы (PUT, DELETE, PATCH) из соображений безопасности. Это особенно актуально для Cloudflare — его WAF по умолчанию блокирует некоторые HTTP-методы в целях защиты.
Как диагностировать ошибку 405
Шаг 1. Проверьте точный URL в адресной строке
Очень часто 405 возникает из-за того, что форма отправляется на неправильный URL. Проверьте, куда именно уходит запрос:
- Откройте Инструменты разработчика в браузере (F12)
- Перейдите на вкладку Network (Сеть)
- Повторите действие, которое вызывает ошибку
- Найдите запрос с статусом 405 и посмотрите его URL и метод
Шаг 2. Проверьте .htaccess (Apache) или конфиг Nginx
Некорректные правила редиректа в .htaccess — частая причина 405. Например, правило, которое перенаправляет все POST-запросы на другой URL, может вызвать 405.
Для Apache: временно переименуйте .htaccess и проверьте, исчезла ли ошибка.
# Через SFTP или SSH
mv .htaccess .htaccess_backup
# WordPress создаст новый .htaccess при посещении Настройки → Постоянные ссылки
Для Nginx: проверьте секцию location в конфиге. Убедитесь, что proxy_pass обрабатывает все необходимые методы.
location /wp-json/ {
try_files $uri $uri/ /index.php?$args;
# Разрешаем все стандартные методы
limit_except GET POST PUT DELETE PATCH {
deny all;
}
}
Шаг 3. Временно отключите плагины
Плагины безопасности и кэширования — главные подозреваемые:
- Wordfence, Sucuri, iThemes Security — могут блокировать методы запросов
- W3 Total Cache, WP Super Cache, WP Rocket — могут некорректно кэшировать REST API
- Cloudflare Flexible SSL — может путать методы при редиректах HTTP→HTTPS
Отключите все плагины через wp-admin или через wp-cli:
wp plugin deactivate --all
Если ошибка исчезла — включайте плагины по одному, пока не найдёте виновника.
Шаг 4. Проверьте тему
Некоторые темы добавляют правила редиректа через functions.php. Переключитесь на стандартную тему (Twenty Twenty-Four) и проверьте, осталась ли ошибка.
wp theme activate twentytwentyfour
Как исправить ошибку 405
Исправление через .htaccess (Apache)
Добавьте правила, разрешающие нужные методы для REST API WordPress:
# Разрешить GET, POST, PUT, PATCH, DELETE, OPTIONS для wp-json
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-json/
RewriteCond %{REQUEST_METHOD} ^(PUT|PATCH|DELETE|OPTIONS)$
RewriteRule .* - [L]
</IfModule>
Исправление для Nginx
В секцию server добавьте:
location /wp-json/ {
if ($request_method !~ ^(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)$) {
return 405;
}
try_files $uri $uri/ /index.php?$args;
}
Исправление через Cloudflare
Если вы используете Cloudflare:
- Войдите в панель Cloudflare
- Перейдите в Security → WAF → Custom Rules
- Проверьте, нет ли правила, блокирующего PUT/DELETE/PATCH
- Добавьте исключение для
/wp-json/*:
(http.request.uri contains "/wp-json/") and not (http.request.method in ["GET", "POST", "PUT", "PATCH", "DELETE"])
Исправление для плагинов безопасности (Wordfence)
В Wordfence: Wordfence → All Options → Advanced Firewall Options — убедитесь, что Block request methods не блокирует PUT, PATCH, DELETE.
Профилактика
- Используйте актуальную версию PHP (8.1+) — старые версии хуже обрабатывают REST API
- Не редактируйте .htaccess вручную без понимания последствий
- Настройте Cloudflare корректно — отключите прокси для
/wp-json/или создайте Page Rule с «Cache Level: Bypass» - Регулярно обновляйте плагины — разработчики часто исправляют совместимость с REST API
- Проверяйте консоль браузера — если видите 405 при работе в админке, это первый звоночек
Краткий чек-лист
- [ ] Проверить URL запроса и метод в Network-вкладке браузера
- [ ] Проверить
.htaccess/ конфиг Nginx - [ ] Временно отключить плагины безопасности и кэширования
- [ ] Переключиться на стандартную тему
- [ ] Проверить настройки Cloudflare WAF
- [ ] Проверить настройки плагинов безопасности (Wordfence, Sucuri)
- [ ] Сбросить постоянные ссылки (Настройки → Постоянные ссылки → Сохранить)
Заключение
Ошибка 405 Method Not Allowed — не приговор, а сигнал, что сервер не понимает, какой HTTP-метод разрешён для конкретного URL. Чаще всего проблема решается корректировкой правил веб-сервера или плагинов безопасности. Главное — не паниковать и методично проверить каждый из пунктов выше. Если у вас остались вопросы — пишите в комментариях, разберёмся вместе.
