如何在有条件的情况下在apache中运行一些代码或命令



我有一个用例,如果在HTTP请求中满足特定条件,我需要执行一些脚本或执行Linux命令。我正在检查是否有任何DELETE方法请求到达我的httpd服务器,我想做一些工作,比如备份文件。我不知道如何使用Apache web服务器做到这一点。但我知道Apache中的if模块

<If "%{REQUEST_METHOD} = DELETE">
# execute script or Linux command
</If>

Apache有可能吗?它可以在任何其他网络服务器上实现吗?

您可以在Apache上使用mod_rewrite,根据请求的元素有条件地将请求内部重写为服务器端脚本(PHP、CGI等)。您不需要为此使用<If>表达式。

例如,要在内部将任何DELETE请求重写为脚本/scripts/script-to-run.cgi,则可以使用以下命令:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} =DELETE
RewriteRule !^/?scripts/ scripts/script-to-run.cgi [L]

RewriteRule模式!^/?scripts/只是确保脚本不会被调用以请求/scripts/目录本身(以避免重写循环)。

<If "%{REQUEST_METHOD} = DELETE">

这在语法上无效。您需要将字符串参数(表达式的RHS)用单引号括起来。允许使用=运算符,但最好使用完整形式的==以避免混淆并与其他语言类似。

例如:

<If "%{REQUEST_METHOD} == 'DELETE'">

进一步阅读:

  • Web本地应用程序Apache:运行shell脚本

相关内容

  • 没有找到相关文章

最新更新