由于cgi,目录无法呈现图像

时间:2015-05-07 08:45:23

标签: apache .htaccess cgi server

我的服务器不会在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>

1 个答案:

答案 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>