将每个请求重定向到 FastCGI 脚本

将每个请求重定向到 FastCGI 脚本

我有一个 FastCGI 脚本,我希望每个请求都重定向到它,无论是哪个 URL。我当前的 vhost 配置如下:

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

如果我在浏览器上打开 URL,http://localhost我就能成功看到由 CGI 脚本呈现的页面。但如果我尝试任何其他页面,我就会收到来自阿帕奇,这意味着请求没有被重定向到我的 CGI 脚本。

.htaccess我在里面添加了以下文件/var/www/localhost/cgi-bin/并遵循以下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]

但是现在我得到的只是一个 Apache 错误 500 页面和 Apache 日志中的一条警告,内容是这样的:

由于可能的配置错误,请求超出了 10 次内部重定向的限制。如有必要,请使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。

我该如何解决这个问题并正确地将每个请求重定向到我的 FastCGI 脚本?

答案1

我不明白为什么,但在我改变之后它就起作用了:

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

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

另外,我清理了我的.htaccess只是为了让事情变得更漂亮(删除了对现有文件和目录的检查):

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

如果有人知道它为什么有效,请在评论或其他地方解释。我真诚地认为 Apache 配置要么是一团糟,要么远远超出了我的理解能力。

相关内容