Назад | Перейти на главную страницу

Можно ли настроить Apache так, чтобы он игнорировал поврежденные файлы .htaccess, но уважал их, если они верны?

У меня есть программа, пишущая и обновляющая некоторые 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 нет. Что вам следует сделать, так это включить эту проверку работоспособности в свою программу, в конце концов, довольно очевидно, откуда исходит коррупция.