Согласно документации 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
. (Когда оставлено как дефолт похоже, что это правильно интерпретируется в соответствии с документами.)