是否可以将 Apache 配置为忽略损坏的 .htaccess 文件,但如果它们正确则尊重它们?

是否可以将 Apache 配置为忽略损坏的 .htaccess 文件,但如果它们正确则尊重它们?

我有一个程序在 .htaccess 文件中写入和更新一些 RewriteRules(主要配置在 vhosts 部分)。这在大多数情况下都运行良好,但有时文件会损坏。

发生这种情况时,服务器会对每个请求响应 500 内部服务器错误,因为 .htaccess 文件已损坏。

是否有一个故障安全选项或我可以配置的东西来告诉 Apache 如果 .htaccess 文件已损坏则应该忽略它,但如果文件正常则应该尊重它?

或者至少是否存在一个工具可以用来定期检查.htaccess 文件是否有效(例如通过 cron 作业)并在其损坏时将其删除?

答案1

尝试Nonfatal选择AllowOverride指示。Apache 2.4 及以上版本支持此功能。

你可能想要使用这个:

AllowOverride Nonfatal=Unknown

答案2

不,没有用于检查 .htaccess 文件的内部机制。您应该做的是将健全性检查纳入您的程序中,毕竟,损坏的来源非常明显。

答案3

实现这一目标的唯一方法如下:

# service httpd configtest && service httpd graceful && service httpd status
Syntax OK
httpd (pid  4580) is running...
# 

... 正如您所看到的,它以自己的方式执行此操作,它会检查配置,如果配置正常,则它会正常重新启动httpd,并且它会向您显示其状态,假设配置configtest正常,否则它不会graceful重新启动。

相关内容