#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/
каталогу (чтобы избежать цикла перезаписи).