使用RewriteCond/RewriteRule重写Apache

使用RewriteCond/RewriteRule重写Apache,apache,mod-rewrite,Apache,Mod Rewrite,我有两个测试站点http://foo/abc,http://foo/def 我试图理解使用vhost模拟alias/directory指令的RewriteCond/RewriteRule过程 可以使用别名/指令块为“abc”、“def”站点提供服务。我试图弄清楚apache是否可以使用vhost块,结合RewriteCond/RewriteRule逻辑来做同样的事情 基本上,尝试使用RewriteCond/RewriteRule组合来限制显示的站点,看看vhost是否/如何用于服务特定站点 看起

我有两个测试站点
http://foo/abc
http://foo/def

我试图理解使用vhost模拟alias/directory指令的
RewriteCond
/
RewriteRule
过程

可以使用别名/指令块为“abc”、“def”站点提供服务。我试图弄清楚apache是否可以使用vhost块,结合
RewriteCond
/
RewriteRule
逻辑来做同样的事情

基本上,尝试使用
RewriteCond
/
RewriteRule
组合来限制显示的站点,看看vhost是否/如何用于服务特定站点

看起来像

RewriteCond %{REQUEST_URI} ^/abc/
RewriteRule ^(.*)$          /var/www/html/abc [B,L,QSA]
可以,但浏览器在这方面出错了


指针是受欢迎的。

浏览器很可能会产生错误,因为目录
/var
(以及其中的所有内容)不是通过apache发布的。

我希望我正确理解了您的问题,您尝试使用ModRewrite模拟虚拟主机

是,这在您的第一次重写条件检查域时是可能的:

RewriteCond %{HTTP_HOST} ^www\.domain1\.com$ [NC]

但请注意,这只适用于HTTP/1.1,就像基于主机名而不是IP的虚拟主机一样。

我不确定我的问题是否已经说清楚了。我会尽力解释的。基本上,我希望使用vhost(如果可能的话)查看url[http://foo/abc..],如果url有“/abc”,那么我希望vhost rewritecond/rules块继续并传递/提供页面。因此,rewritecond将查找“/abc”,如果有,rewriterules将设置正确的url/文件(类似于别名过程)。如果url中没有“abc”,vhost/rewrite逻辑将不会对url做任何事情。我有很多URL,我想知道vhost/rewrite是否可以这样使用。