Redirecionar todas as solicitações para o script FastCGI

1

Eu tenho um script FastCGI que eu quero que todos os pedidos sejam redirecionados para ele, não importa qual URL. Minha configuração atual do vhost é a seguinte:

<VirtualHost *:80>
        ServerName localhost
        FastCGIExternalServer /var/www/localhost/cgi-bin/ws -host 127.0.0.1:2000
        Alias / /var/www/localhost/cgi-bin/ws
        DocumentRoot /var/www/localhost/cgi-bin/
        <Directory /var/www/localhost/cgi-bin/>
                SetHandler fastcgi-script
                Options +ExecCGI
                Options +FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Se eu abrir o URL http://localhost no meu navegador, vejo a página renderizada pelo script CGI. Mas, se eu tentar qualquer outra página, recebo uma página de erro 404 do Apache , o que significa que a solicitação não foi redirecionada para o meu script CGI.

Adicionei o seguinte arquivo .htaccess dentro de /var/www/localhost/cgi-bin/ com as seguintes regras mod_rewrite :

RewriteEngine On                                                                                                                                                                
RewriteCond %{REQUEST_FILENAME} -s [OR]                                                                                                                                          
RewriteCond %{REQUEST_FILENAME} -l [OR]                                                                                                                                          
RewriteCond %{REQUEST_FILENAME} -d                                                                                                                                               
RewriteRule ^.*$ - [NC,L]                                                                                                                                                        
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}wc [NC,L]

Mas agora tudo que eu tenho é uma página de erro 500 do Apache e um aviso dentro do Apache registra com a mensagem:

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

Como posso resolver isso e redirecionar corretamente todas as solicitações para o meu script FastCGI?

    
por Vinícius Gobbo A. de Oliveira 25.07.2014 / 15:37

1 resposta

1

Eu não entendo o porquê, mas funcionou depois que eu mudei:

de

Alias / /var/www/localhost/cgi-bin/ws

para

Alias / /var/www/localhost/cgi-bin/

Além disso, limpei meu .htaccess apenas para deixar as coisas mais bonitas (removi a verificação de arquivos e diretórios existentes):

RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}wc [NC,L]

Se alguém entender por que funcionou, explique nos comentários ou em outro lugar. Eu sinceramente acho que a configuração do Apache é uma grande bagunça, ou está muito acima dos meus conhecimentos.

    
por 25.07.2014 / 16:00