我已经搜寻过这个答案以前是否没有快乐。
我想使用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 。
不要介意那些定义在块中,他们什么也不做,没有任何作用。
谢谢