我试图解开 Apache 处理程序。官方文档有以下示例:
以下指令将导致对带有 html 扩展名的文件的请求触发 footer.pl CGI 脚本的启动。
Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html
然后 CGI 脚本负责发送最初请求的文档(由 PATH_TRANSLATED 环境变量指向)并进行所需的任何修改或添加。
我尝试遵循这个例子。我的目录设置是:
- /var/www/testsite/index.html
- /var/www/testsite/cgi-bin/rp.sh
我的虚拟主机文件是:
<VirtualHost *:80>
ServerName http://localhost-testsite
DocumentRoot /var/www/testsite
<Directory /var/www/testsite>
Action footer /cgi-bin/rp.sh
AddHandler footer .html
</Directory>
ErrorLog /var/www/logs/error-testsite.log
</VirtualHost>
如果我正确理解了文档,当请求 html 文件时,应该调用我的 rp.sh 脚本,并将 PATH_TRANSLATED 变量设置为 html 文件名。但是,当我在浏览器中打开 localhost-testsite/index.html 时,出现意外错误:
[Thu Mar 14 15:38:18 2013] [error] [client 127.0.0.1] File does not exist: /var/www/testsite/cgi-bin/rp.sh/index.html
我错过了什么吗?最重要的问题是:如何让 cgi 脚本处理所有具有特定扩展名的文件?
Apache 版本是 Apache/2.2.22 (Ubuntu)。所有文件和目录都有 777 权限。