Apache 将 URL 映射到 CGI 脚本

Apache 将 URL 映射到 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 到脚本的映射吗?

答案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),因此服务器会抛出错误。

相关内容