Назад | Перейти на главную страницу

Отображение URL-адреса Apache в сценарий CGI

В Apache я хотел бы, чтобы URL-адрес "/ myscript" или "/ myscript? Param = myparam" выполнял сценарий CGI, расположенный по адресу:

/usr/local/scripts/custom.pl

Я пытался:

Action custom-action /usr/local/scripts/custom.pl
<Location "/myscript">
    SetHandler custom-action
</Location>

но это не работает.

Есть идеи, как я могу добиться сопоставления URL-адреса сценарию?

mod_rewrite может легко сделать это с помощью

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/myscript$
RewriteRules (.*) /usr/local/scripts/custom.pl

Убедитесь, что вы правильно установили права доступа, как фактические права доступа к файлам, так и директиву каталога, чтобы разрешить доступ к этой папке.

Пример директивы каталога:

<Directory "/usr/local/scripts">
    Allow from All
    AllowOverride None
    Options None +ExecCGI
</Directory>

Ваш обработчик будет работать, если вы создадите файл или каталог в DOCUMENT_ROOT с именем myscript. Пока не понял почему, но это работает!

[править] Похоже, что если вы используете Action для определения обработчика, вы фактически создаете фильтр, через который будут передаваться файлы в файловой системе (например, для самостоятельной обработки включения на стороне сервера). Если цель не существует в файловой системе, то вашему скрипту нечего передавать (через PATH_TRANSLATED), поэтому сервер выдает ошибку.