Назад | Перейти на главную страницу

Почему Apache читает файлы .htaccess, даже если они отключены?

Согласно документации Apache, установка AllowOverride и AllowOverrideList варианты для None, полностью игнорирует .htaccess файлы. Даже не пытайтесь читать их из файловой системы.

У меня оба эти параметра установлены на none но Apache по-прежнему читает .htaccess файлы. Я знаю это, потому что если я поставлю .htaccess файл с некоторыми действительными директивами, он выдает ошибку 500. Комментируя директивы (по сути, пустой .htaccess файл) ошибка 500 не выдается. Итак, очевидно, что Apache все еще читает .htaccess файлы.

Журнал ошибок Apache2 (очищен для общего пользования):
[Чт, 30 июля, 23:36: 35.393831 2020] [core: alert] [pid 60903] [client d.d.d.d: 10554] /var/www/example/.htaccess: Требовать здесь не разрешено, референт: http://example.net/

Вопрос в том, почему? Что мне не хватает? Как заставить его вести себя по документации? т.е. даже не пытайтесь прочитать .htaccess файлы.

Ссылка: https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

Когда для этой директивы установлено значение None, а для AllowOverrideList установлено значение None, файлы .htaccess полностью игнорируются. В этом случае сервер даже не будет пытаться читать файлы .htaccess в файловой системе.

Это могло быть ошибкой в ​​более ранних версиях Apache 2.4, которая, как сообщается, была исправлена ​​в Apache 2.4.20.
https://bz.apache.org/bugzilla/show_bug.cgi?id=58528

Кажется, ошибка заключается в том, что при явной настройке AllowOverrideList None значение неверно сброс.

Я подтвердил, что вижу такое же (неправильное) поведение в Apache 2.4.7.

Если вы никогда не устанавливали AllowOverrideList в другом месте конфигурации сервера вы можете опустить эту директиву, поскольку дефолт является None. (Когда оставлено как дефолт похоже, что это правильно интерпретируется в соответствии с документами.)