Apache Error AH01797: client denied by server configuration — Авторизация
Пользователи получают ошибку 403 Forbidden при попытке открыть веб-страницу или выполнить POST-запрос. В error.log Apache фиксируется отказ подсистемы контроля доступа: [authz_core:error] [pid 1234:tid 5678] [client 10.0.0.1:54321] AH01797: client denied by server configuration: /var/www/site/index.php.
| Компонент | Ошибка конфигурации | Результат анализа ядра |
|---|---|---|
Контекст <Directory> | Отсутствует блок авторизации | Применяется глобальное правило безопасности по умолчанию (Deny) |
Блок <Location> | Пустой блок без директив доступа | Ядро не находит ни одного успешного провайдера Require |
Локальный .htaccess | Смешивание директив Satisfy и Require | Конфликт логики авторизации Apache 2.2 и 2.4 |
- Веб-сервер запрещает доступ, поскольку ни одно правило авторизации не вернуло статус
AUTHZ_GRANTED. - В отличие от AH01630, ошибка AH01797 часто свидетельствует о полном отсутствии директив авторизации в цепочке конфигурации.
- Проверьте определение блока
<Directory>для корня вашего виртуального хоста:<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/example.com <Directory /var/www/example.com> Options -Indexes +FollowSymLinks AllowOverride All # Обязательная директива авторизации: Require all granted </Directory> </VirtualHost> - Если доступ настраивается внутри блоков
<Location>или<Files>, убедитесь, что в них явно прописан положительный критерий допуска:<Location /api/public> Require all granted </Location> - Удалите устаревшие директивы
Satisfy AnyилиSatisfy Allиз файлов.htaccess, заменив их на контейнеры<RequireAny>или<RequireAll>. - Убедитесь, что модуль авторизации
authz_coreактивирован в системе (по умолчанию включен в ядро). - Проверьте конфигурацию на ошибки:
sudo apache2ctl configtest. - Перезагрузите демон:
sudo systemctl reload apache2.
Require, Apache 2.4 автоматически блокирует запрос с кодом 403 и ошибкой AH01797 в журнале.Частые вопросы (FAQ)
В чем разница между AH01630 и AH01797?
AH01630 обычно возникает при явном срабатывании запрещающего правила (Require all denied или несовпадении IP), а AH01797 — когда в цепочке проверок вообще не было найдено ни одного применимого разрешающего правила Require.
Как объединить проверку IP-адреса и пароля в Apache 2.4?
Используйте блок <RequireAll> (требуется выполнение обоих условий) или <RequireAny> (достаточно выполнения хотя бы одного из условий).
Может ли директива AllowOverride None приводить к AH01797?
Да, если директива Require all granted находилась в файле .htaccess, но AllowOverride None запретил чтение этого файла сервером.
Как разрешить доступ всем, кроме определенных IP адресов?
Используйте: <RequireAll> Require all granted Require not ip 192.168.1.100 </RequireAll>.