mod_rewrite指向子域访问

时间:2010-09-03 21:25:42

标签: apache mod-rewrite

我们正在设置API,我们希望使用Apache mod_rewrite将对http://api.domain.com的所有访问定向到位于/cgi-bin/api.pl的脚本。以下是我们目前使用的内容:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^api.domain.com$ [NC]
RewriteRule ^(.*)$ /cgi-bin/api.pl [NC,L,QSA]

但是,这给了我们以下错误:

[Fri Sep 03 14:18:32 2010] [error] [client 67.180.34.0] mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.
[Fri Sep 03 14:18:32 2010] [error] [client 67.180.34.0] 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.

如果我们尝试正确访问http://domain.com/cgi-bin/api.pl脚本功能。我们做错了什么?请帮忙!提前谢谢。

1 个答案:

答案 0 :(得分:2)

我假设您在.htaccess文件中定义规则,其中L标记为might not work like you were expecting

由于您的测试模式^(.*)$匹配给它的任何输入,您重写的URL也会在后续请求中匹配,并且您将获得内部无限重定向循环(最终导致服务器错误)。

解决方案是检查您是否已经重写了网址:

RewriteEngine on

RewriteCond %{REQUEST_URI} !=/cgi-bin/api.pl
RewriteCond %{HTTP_HOST} ^api.domain.com$ [NC]
RewriteRule ^.*$ /cgi-bin/api.pl [NC,L,QSA]