Apache:使用RewriteRule进行模式匹配和分组会导致本地path,而不是获取URL组件

我已经搜寻过这个答案以前是否没有快乐。

我想使用RewriteRule的模式匹配来获取请求的path,并redirect客户端保持path在最终的redirect。

我认为这样的事情会做的伎俩:

 RewriteRule. ^(.*)$ http://testserver/test/$1 

如果用户请求foo ,发送他到test/foo (不要担心循环,我把一些RewriteCond逻辑来防止)。

令我惊讶的是,Apache结束了类似于http://testserver/foo/var/www/html 。 它做了什么是以下几点:

 /bar /var/www/html/bar 

我提出了mod_rewrite的日志级别,发现它做了匹配,但是Apache扩展匹配/的本地path,这是/var/www/html并使用它来redirect浏览器,这将无法正常工作。

我尝试使用[PT] ,我认为这将防止扩大,但它没有。

任何想法,我怎样才能防止发生? 任何帮助,将不胜感激。

回答@MrWhite,我附上了相关的<if>块:

 (If'env('var1')=='1'&& env('var2')=='0'&& env('var3')=='1'“>
           定义requestUri $ 1
           定义后台$ customDomain
           重写引擎
            RewriteCond%{REQUEST_URI}!^ / redir /.*$
            RewriteRule ^(。*)$ / redir /%{REQUEST_URI}
 </如果>           

这个块位于<Location>块之下,而这个块又位于主要的<VirtualHost>块之下。

如果将它移出<If>块,则模式^(.*)$会给我们返回相同的%{REQUEST_URI} 。 在<If>块中,它扩展到本地文件系统+请求的资源(如果我请求/index.html扩展到/var/www/html/index.html

不要介意那些定义在块中,他们什么也不做,没有任何作用。

谢谢