В 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), поэтому сервер выдает ошибку.