Apache LinuxApache HTTP Server 2.4

Apache: директива Options вызывает HTTP 500 после обновления

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Как по error.log определить ошибку директивы Options в Apache 2.4 и исправить её, не открывая листинг каталогов и исполнение скриптов.

В этой статье
  1. Что означает проблема
  2. Как различить причины
  3. Подробная диагностика и устранение
  4. Как проверить результат
  5. Если проблема не устранена

#Что означает проблема

После обновления Apache конфигурация или .htaccess с некорректной директивой Options может приводить к 500 Internal Server Error. Причины различаются: запрещённый контекст, неразрешённое переопределение в .htaccess, неверное сочетание вариантов, опечатка. Не каждый HTTP 500 связан с Options: диагноз ставится по конкретной строке error.log.

#Как различить причины

Возможная причинаКак узнатьЧто делать
Options запрещена в .htaccessAllowOverride допускает только другие группы настроек или исключает конкретные опции.error.log прямо сообщает, что Options not allowed here либо option not allowed.Изменить только допустимый набор Overrides или перенести нужную директиву в основной конфиг.
Неверная форма синтаксисаВ Options смешаны параметры с +/− и без знака или указан неизвестный вариант.configtest либо журнал указывают на неверный параметр Options.Исправить на допустимое явное перечисление.
Options задана в недопустимой секцииНапример, Options появилась внутри Files или FilesMatch в основном файле.configtest показывает контекстную ошибку с номером строки.Переместить в разрешённую секцию Directory по документации.

#Подробная диагностика и устранение

  1. Установите время и адрес появления 500В браузере откройте страницу, где возникает HTTP 500, и проверьте код на вкладке «Сеть» (F12). Сравните с другой статической страницей сайта. Если 500 возникает только в одном каталоге, часто виноват расположенный там .htaccess. Если 500 на всех сайтах, причиной может быть общая конфигурация или PHP, поэтому не меняйте Options без подтверждения.
  2. Прочитайте конкретное сообщение, а не догадывайтесьПодключитесь по SSH, выясните error.log нужного виртуального хоста и выполните sudo tail -n 100 /var/log/apache2/error.log либо замените путь на заданный в ErrorLog. Ищите сообщения за момент теста: Options not allowed here, Option ... not allowed here, Illegal option и путь/строку файла. Путь может указывать на .htaccess внутри подкаталога, а не на глобальную настройку.
  3. Проверьте основную конфигурацию до измененияНа Debian/Ubuntu выполните sudo apache2ctl configtest. Для ошибок глобального файла команда обычно показывает точный номер строки. Если Syntax OK, это не исключает ошибку разбора .htaccess при запросе — смотрите error.log. Проверьте версию apache2 -v, поскольку синтаксис и допустимые области применения зависят от версии и сборки.
  4. Найдите действующий контекст OptionsОткройте файл, указанный в ошибке, и соседние блоки <Directory>, .htaccess и AllowOverride. У Apache директива Options допускается в конфигурации сервера, VirtualHost, Directory и .htaccess в разрешённом контексте, но не внутри Files/FilesMatch. Если Options написана в .htaccess, проверьте, разрешает ли родительский Directory такую группу и выбранные значения.
  5. Исправьте синтаксис с минимальными полномочиямиДля добавления/удаления отдельных флагов используются Options +FollowSymLinks -Indexes или другой набор в соответствии с задачей. Не смешивайте в одной строке варианты с префиксами и без них. Не используйте Options All как универсальное решение: можно случайно включить Indexes или иные нежелательные возможности. При сомнении оставьте текущую политику доступа, изменив лишь подтверждённый ошибочный параметр.
  6. Не расширяйте AllowOverride без необходимостиЕсли Options необходима только в одном приложении, определите строго допустимые варианты через AllowOverride Options=..., когда версия и конфигурация поддерживают такой синтаксис, либо перенесите директиву в защищённый основной файл. AllowOverride All для всего DocumentRoot открывает дополнительные возможности управления из .htaccess. На панелях хостинга используйте поддерживаемый путь настройки, иначе изменения исчезнут при следующем сохранении.
  7. Сделайте копию и примените только проверенный вариантСохраните резервную копию изменяемого файла, затем выполните sudo apache2ctl configtest. При Syntax OK выполните reload Apache, если изменялась основная конфигурация; .htaccess обычно читается при запросе без reload. Если 500 сохранилась, проверьте новую запись журнала вместо последовательного включения всех Options. Для отката восстановите копию и повторите тест.
  8. Проверьте страницу и ограниченияПовторите тот же URL, убедитесь, что вместо 500 получен штатный ответ. Проверьте, что URL каталога без index не начал показывать файлы, запрет приватных ресурсов действует, а PHP/CGI не исполняются в каталогах загрузок, если прежде были запрещены. Если проверка неудачна, откатите изменение и передайте одну конкретную строку error.log.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1SSH с sudo на Debian/Ubuntu: configtest не обязательно выявляет ошибки динамически читаемого .htaccess, поэ…
    Linux · Терминал (Bash)КомандаНужен sudo
    SSH с sudo на Debian/Ubuntu: configtest не обязательно выявляет ошибки динамически читаемого .htaccess, поэтому нужен журнал по времени запроса.
    sudo apache2ctl configtest
    sudo tail -n 100 /var/log/apache2/error.log
    Вариант 2Пример корректного способа указать изменения опций.
    Текст
    Пример корректного способа указать изменения опций. Применять только если соответствующие параметры нужны и разрешены политикой доступа.
    Options +FollowSymLinks -Indexes

#Как проверить результат

Исходный URL больше не возвращает 500, в error.log нет сообщения о Options, страницы с закрытым доступом остаются закрытыми, листинг каталогов и лишние обработчики не включены.

#Если проблема не устранена

Если configtest проходит, но 500 возвращается только внутри каталога, проверяйте .htaccess при фактическом запросе. Если лог сообщает о PHP или правах, переходите к соответствующей причине, а не изменяйте Options.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.