我正在尝试为 Apache 中的某些文件设置自定义操作处理程序(在 Ubuntu 上运行)。在我看来,我已经为操作处理程序正确设置了站点配置,但现在每当我访问它处理的任何文件时,都会出现 404 错误。
如果我删除动作处理程序,文件 200s 将如预期一样显示为文本,因此该文件确实存在。
以下是站点配置:
<VirtualHost *:80>
ServerName foo.com
ServerAdmin [email protected]
DocumentRoot /home/foo/www
AddHandler application/x-httpd-php .php .php3 .php4 .php5 .html .htm
Action test-script "/usr/lib/cgi-bin/tts.cgi"
AddHandler test-script .tts
</VirtualHost>
<Directory "/home/foo/www">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
tts
以下是我希望在点击任何文件时执行的测试脚本:
#!/bin/bash
printf "Content-type: text/html\n\n"
printf "Hello World!\n"
答案1
首先,确保使用以下命令启用 CGI 模块:
a2enmod cgid
并尝试添加AddHandler
上面Action
AddHandler test-script .tts
Action test-script "/usr/lib/cgi-bin/tts.cgi"
如果您想运行 CGI 脚本,只需使用如下配置:
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py .rb
</Directory>