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