我的服务器不会在cgi目录下呈现任何图像,我知道这是因为apache被告知要将该目录下的每个文件作为cgi程序运行。
我想调整设置以告诉apache将所有.cgi和.pl作为cgi程序运行,但运行其余的文件应该是。
例如,如果我从浏览器转到example.com/x.gif
我可以看到图片,但如果我转到example.com/cgi-bin/x.gif
我就不能。 (当然,这两个目录中的图像都是775)
问题是我不知道怎么告诉apache,这是httpd.include
<Directory /var/www/vhosts/example.com/httpdocs> <IfModule mod_perl.c> <Files ~ (\.pl$)> SetHandler perl-script PerlHandler ModPerl::Registry Options ExecCGI allow from all PerlSendHeader On </Files> </IfModule> <IfModule mod_python.c> <Files ~ (\.py$)> SetHandler python-program PythonHandler mod_python.cgihandler </Files> </IfModule> <IfModule mod_fcgid.c> <Files ~ (\.fcgi)> SetHandler fcgid-script Options +FollowSymLinks +ExecCGI </Files> </IfModule> <IfModule mod_fcgid.c> <Files ~ (\.php)> SetHandler fcgid-script FCGIWrapper /var/www/cgi-bin/cgi_wrapper/cgi_wrapper .php Options +ExecCGI allow from all </Files> </IfModule> SSLRequireSSL Options -Includes +ExecCGI </Directory>
答案 0 :(得分:0)
我找到了解决方案。
正如我所说,apache被告知将该目录下的每个文件作为cgi程序运行。所以需要新的规则来告诉apache使用与.php
,.pl
或.cgi
不同的文件类型的默认处理程序:
<Directory /var/www/vhosts/example.com/httpdocs/cgi-bin>
<FilesMatch "^(?!.*\.(cgi|php|pl)$).*$">
SetHandler default-handler
</FilesMatch>
</Directory>
如果由于任何原因无法访问httpd.conf
,您仍可以.htaccess
将这三行添加到.htaccess
cgi-bin
文件中。 } folder:
<FilesMatch "^(?!.*\.(cgi|php|pl)$).*$">
SetHandler default-handler
</FilesMatch>