zaLinux.ru

Решение пробем с ошибкой .htaccess: Invalid command ‘Order’, perhaps misspelled or defined by a module not included in the server configuration


При работе веб-сайта вы можете столкнуться с ошибками:

  • .htaccess: Invalid command 'Order',
  • .htaccess: Invalid command 'allow',
  • .htaccess: Invalid command 'Deny'

У всех этих ошибок одинаковая причина, хотя и текст сообщения может чуть различаться.

При этом сайт выдаёт малоинформативное сообщение о проблемах с сервером, а именно ошибку 500 Internal Server Error. То есть для выяснения истинной причины проблемы нужно обратиться к логам веб-сервера, в первую очередь к логам ошибок.

На странице веб-сайта при этом отображается:

500 Internal Server Error

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at admin@example.com to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Если заглянуть в журнал доступа веб-сервера и в логи ошибок веб-сервера Apache, то там будет показано примерно следующее:


[Fri Nov 15 11:52:35.396183 2019] [core:alert] [pid 4916:tid 1228] [client ::1:49892] C:/Server/data/htdocs/Test/COA3/.htaccess: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
[Fri Nov 15 11:53:39.953167 2019] [core:alert] [pid 4916:tid 1300] [client ::1:50010] C:/Server/data/htdocs/Test/COA3/.htaccess: Invalid command 'allow', perhaps misspelled or defined by a module not included in the server configuration
[Fri Nov 15 11:53:46.230342 2019] [core:alert] [pid 4916:tid 1228] [client ::1:50011] C:/Server/data/htdocs/Test/COA3/.htaccess: Invalid command 'Deny', perhaps misspelled or defined by a module not included in the server configuration

Проблема вызвана директивами контроля доступа (они используются для блокировки пользователей по IP, например). В Apache 2.2 используются директивы Allow, Deny и Order, которые обеспечиваются старой версией модуля mod_access_compat. Для версии Apache 2.4 они являются устаревшими и будут убраны в будущих релизах Apache. Если вы столкнулись с приведёнными выше ошибками, значит ваша версия Apache уже не поддерживает работу с ними.

Решить эту проблему очень просто — удалите все записи с Allow, Deny и Order из файлов .htaccess. Чтобы продолжить блокировать IP адреса, сделайте это с помощью новых директив.

Например, чтобы закрыть доступ к сайту с определённых IP адресов используйте следующую конструкцию:

<RequireAll>
    Require all granted
    Require not ip 213.167.206.7
</RequireAll>

Другие подробности и примеры блокировки по IP и разрешению доступа по IP вы найдёте в статье «Контроль доступа к сайту (блокировка по IP, User-Agent)».


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *