Перейти к содержимому

405 Method Not Allowed: что это за ошибка и как исправить на WordPress

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:

  1. Войдите в панель Cloudflare
  2. Перейдите в SecurityWAFCustom Rules
  3. Проверьте, нет ли правила, блокирующего PUT/DELETE/PATCH
  4. Добавьте исключение для /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.

Профилактика

  1. Используйте актуальную версию PHP (8.1+) — старые версии хуже обрабатывают REST API
  2. Не редактируйте .htaccess вручную без понимания последствий
  3. Настройте Cloudflare корректно — отключите прокси для /wp-json/ или создайте Page Rule с «Cache Level: Bypass»
  4. Регулярно обновляйте плагины — разработчики часто исправляют совместимость с REST API
  5. Проверяйте консоль браузера — если видите 405 при работе в админке, это первый звоночек

Краткий чек-лист

  • [ ] Проверить URL запроса и метод в Network-вкладке браузера
  • [ ] Проверить .htaccess / конфиг Nginx
  • [ ] Временно отключить плагины безопасности и кэширования
  • [ ] Переключиться на стандартную тему
  • [ ] Проверить настройки Cloudflare WAF
  • [ ] Проверить настройки плагинов безопасности (Wordfence, Sucuri)
  • [ ] Сбросить постоянные ссылки (Настройки → Постоянные ссылки → Сохранить)

Заключение

Ошибка 405 Method Not Allowed — не приговор, а сигнал, что сервер не понимает, какой HTTP-метод разрешён для конкретного URL. Чаще всего проблема решается корректировкой правил веб-сервера или плагинов безопасности. Главное — не паниковать и методично проверить каждый из пунктов выше. Если у вас остались вопросы — пишите в комментариях, разберёмся вместе.