我有一个用例,如果在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脚本