Как запустить некоторый код или команду на apache, если условие

#linux #apache #nginx #webserver #httpd.conf

Вопрос:

У меня есть вариант использования, когда мне нужно выполнить какой-либо сценарий или выполнить команду linux, если в http-запросе выполняется определенное условие. Я проверяю, поступает ли какой-либо запрос на удаление метода на сервер httpd, я хочу выполнить некоторую работу, такую как резервное копирование файлов. Я не уверен, как это сделать с веб-сервером apache. Но я знаю о модуле if в apache.

 <If "%{REQUEST_METHOD} = DELETE">
    # excute script or linux command
</If>
 

Пожалуйста, дайте мне знать, возможно ли это вообще с apache или нет. Также дайте мне знать, если это можно получить на любом другом веб-сервере.

Ответ №1:

Вы можете внутренне переписать запрос в скрипт на стороне сервера (PHP, CGI и т.д.), Условно основанный на элементе запроса, используя mod_rewrite на Apache. Для этого вам не нужно использовать <If> выражение.

Например, чтобы внутренне переписать любой DELETE запрос в свой скрипт /scripts/script-to-run.cgi , вы можете использовать следующее:

 RewriteEngine On

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

RewriteRule Шаблон !^?scripts/ просто гарантирует, что сценарий не вызывается для запросов к самому /scripts/ каталогу (чтобы избежать цикла перезаписи).