Можно ли настроить 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 запустить снова.

Другие вопросы по тегам