Что такое ошибка 405

Рассказываем, что собой представляет ошибка 405 Method Not Allowed, почему она возникает и как ее можно исправить (от лица разработчиков и пользователей).

О чем говорит ошибка 405?

Код 405 говорит о том, что пользователь не может получить доступ к запрашиваемой странице из-за использования некорректного HTTP-запроса.

Эта ошибка сообщает именно о невозможности получить нужный пользователю контент. При этом сам контент, как и страница, на которой он размещен, существуют и нормально функционируют. Это главное отличие 405 Method Not Allowed от 404 Not Found.

Из-за чего появляется ошибка 405?

Как уже отмечено выше, причина кроется в HTTP-запросе. Есть два наиболее часто используемых запроса: GET – чтобы выгрузить данные с сайта (сервера) и POST – чтобы загрузить данные (отправить какой-то контент) на сайт (сервер). Несмотря на их общую универсальность и широту применения, есть ряд правил, по которым работают веб-серверы, и по котором расценивают корректность использования HTTP-запросов.

Что такое ошибка 405

Когда клиент посылает на сервер запрос GET там, где нужен запрос POST, он провоцирует появление ошибки 405 Method Not Allowed. Об этом, собственно, и говорит как название ошибки, так и ее краткое описание в некоторых браузерах.

Как исправить ошибку 405 Method Not Allowed?

Теперь перейдем непосредственно к решению проблемы.

Советы разработчикам и вебмастерам

Наличие или отсутствие кода 405 в большей степени зависит от тех, кто занимался созданием «нерабочей» страницы, поэтому начнем с инструкций для специалистов.

За основу возьмем Apache- и nginx-серверы на базе хостинга Timeweb. Сразу отметим, что большая часть инструкций универсальна и одинаково хорошо подойдет клиентам других хостинг-провайдеров.

Скорректировать параметры Apache-сервера

  • Переходим в панель управления хоста (или стороннюю, например, cPanel или Vesta).
  • В Timeweb есть вкладка «Файловая система». Если у вашего хоста такой нет или вообще не организован доступ к ФС, то подключаемся к серверу по SSH.
  • Открываем конфигурационный файл с параметрами сервера .htaccess

Внутри будет список директив, отвечающих за поведение сервера. Разыскиваем строки с кодом [R=405, L] и комментируем их, прописав в начале каждой строки символ # – это деактивирует их.

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/com/services/?.$

RewriteCond %{REQUEST_METHOD} =GET

RewriteRule ^(.)$ http://__ссылка-на-ваш-сайт__/com/new$1 [R=405,L]

Так может выглядеть код в .htaccess с искомой директивой

Скорректировать параметры nginx-сервера

  • Открываем файловую систему сервера и внутри разыскиваем файл nginx.conf.
  • Либо используем команду vi /usr/local/nginx/conf/nginx.conf, чтобы открыть конфигурационный файл.
  • Ищем строку кода с упоминанием 405 Method Not Allowed, анализируем, и, если она оказалась среди параметров случайно, удаляем.

server { listen 90; listen 443 ssl;

server_name мой-сайт.ru;

location /users/create { if ($request_method = GET) { return 405 https://мой-сайт.ru/какая-то-часть-сайта/create$request_uri; } } }

Пример кода с запросом метода в настройках nginx

Проанализировать вновь появившиеся записи в БД и в коде

Некоторые расширения для CMS (систем управления данными в духе WordPress или Joomla) запрашивают доступ к базе данных и создают новые элементы. Их деятельность приводит к появлению ошибок в структуре БД. Отсюда и 405 Not Allowed.

Что такое ошибка 405

Надо проверить базу данных на наличие новых записей и удалить все подозрительные или очевидно некорректные.

С кодом та же ситуация. Регулярный дебаггинг и рефакторинг заметно сокращают количество ошибок всех сортов.

Обойти ограничение на время выполнения PHP-скриптов

У хостинг-провайдеров, как правило, есть ограничение на время выполнения PHP-скриптов: не больше 30 секунд на задачу. Поэтому при выполнении ресурсоемких процессов в духе импорта или экспорта массивных баз данных возникает ошибка 405.

Чтобы обойти ограничение:

  1. Загрузить или выгрузить базу данных с помощью phpMyAdmin. У этого приложения в параметрах может быть не установлено ограничение, аналогичное другим параметрам хоста.
  2. Поделить базу данных на более компактные составляющие, чтобы на загрузку одного элемента уходило не более 30 секунд.
  3. Экспортировать БД, используя Cron. На выполнение процессов (PHP-скриптов), запланированных через Cron, выделяется больше времени.

Другие способы

Если ошибка возникла после обновления CMS, стоит «откатиться» на предыдущую, используя рабочую резервную копию данных, и попытаться установить обновление повторно или сделать это позднее.

Если ошибка возникла после установки нового дополнения в WordPress (Joomla, Drupal), то следует его удалить и перепроверить сайт. Возможно, расширение провоцирует сбой и нужно найти ему замену.

Советы пользователям

Вряд ли пользователь может быть виноват в появлении ошибки, но на всякий случай следует перезагрузить страницу. Также можно удалить кэш из браузера или открыть страницу в режиме «Инкогнито». Это позволит исключить локальные факторы и окончательно убедиться в том, что проблема на стороне сервера, а не клиента.

Кроме этого можно проверить корректность введенного адреса. Возможно, ошибка затесалась в адресной строке (опечатка, лишний знак или отсутствие слеша).

Вместо заключения

На этом все. Ошибка 405 не такое частое явление, как 404, но она может доставить немало проблем. Один из вышеописанных способов исправления поможет устранить проблему и вернуть сервер/сайт в полностью работоспособное состояние.

Hosting2go.ru