Можно ли настроить Apache на игнорирование поврежденных файлов.htaccess, но уважать их, если они верны?
У меня есть программа, пишущая и обновляющая некоторые RewriteRules в файле.htaccess (основная конфигурация находится в разделе vhosts). Это работает нормально в большинстве случаев, но иногда файл поврежден.
Когда это происходит, сервер отвечает 500 Internal Server Error на каждый запрос, потому что файл.htaccess поврежден.
Есть ли опция отказоустойчивости или что-то, что я могу настроить, чтобы сообщить Apache, что он должен игнорировать файл.htaccess, если он поврежден, но уважать его, если он в порядке?
Или, по крайней мере, есть ли инструмент, который я могу использовать, чтобы регулярно проверять, является ли файл.htaccess действительным (например, заданием cron), и удалять его, если он поврежден?
3 ответа
Попробуйте Nonfatal
вариант AllowOverride
Директива Это поддерживается Apache 2.4 и выше.
Вы, вероятно, хотите использовать это:
AllowOverride Nonfatal=Unknown
Нет, внутреннего механизма для линтинга файлов.htaccess нет. Что вы должны сделать, так это включить в свою программу проверку работоспособности, ведь довольно очевидно, откуда исходит коррупция.
Единственный способ "сделать" это следующий:
# service httpd configtest && service httpd graceful && service httpd status
Syntax OK
httpd (pid 4580) is running...
#
... как вы можете видеть, он делает это по-своему, где он проверяет конфигурацию и, если все в порядке, он будет корректно перезапущен httpd
и он покажет вам статус, если configtest
было хорошо, иначе это не пойдет graceful
запустить снова.