在 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 到脚本的映射吗?
答案1
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>
答案2
如果您在 DOCUMENT_ROOT 中创建一个名为 myscript 的文件或目录,您的处理程序将起作用。尚未弄清楚原因,但它确实起作用了!
[编辑] 似乎如果您使用 Action 来定义处理程序,那么您实际上是在创建一个过滤器,文件系统中的文件将通过该过滤器传递(例如,用于 DIY 服务器端包含处理)。如果目标在文件系统中不存在,则没有任何内容可以传递给您的脚本(通过 PATH_TRANSLATED),因此服务器会抛出错误。