При использовании конфигурации Apache/mod_rewrite, представленной ниже, я получаю ошибку 403 «Запрещено» для любых CGI-скриптов в корневом каталоге /var/www/. Я не получаю никаких ошибок для статических файлов.
Скрипты из корневого каталога, т.е. /var/www/random/script.cgi, работают нормально, без ошибок.
При выключенном RewritedEngine CGI-скрипты работают нормально даже в корневом каталоге /var/www/
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
Options SymLinksIfOwnerMatch
AllowOverride All
<IfModule mod_rewrite.c>
RewriteEngine on
</IfModule>
</Directory>
<Directory /var/www/>
Options +ExecCGI
Options SymLinksIfOwnerMatch
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler cgi-script .cgi
DirectoryIndex index.cgi
</Directory>
<Files "index.cgi">
SetHandler perl-script
PerlHandler ModPerl::PerlRunPrefork
Options ExecCGI
PerlSendHeader On
allow from all
</files>
решение1
Попробуйте скопировать работающий скрипт в root и посмотреть, работает ли он, если проблема не в conf. Используйте флаг -p cp, чтобы сохранить такие вещи, как разрешение на выполнение. Например:
cp -p /var/www/random/script.cgi /var/www/script.cgi