在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中创build一个名为myscript的文件或目录,您的处理程序将工作。 还没有制定出为什么,但它的工作!
看来,如果你使用Action来定义处理程序,那么你正在有效地创build一个文件系统中的文件将被传递的filter(例如,对于DIY服务器端包含处理)。 如果目标不存在于文件系统中,那么没有任何东西可以传递给脚本(通过PATH_TRANSLATED),所以服务器会抛出一个错误。