.htaccess重写不会在主URL上触发

.htaccess重写不会在主URL上触发,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有两个不同的域,我想将它们指向服务器上的不同文件夹 这个.htaccess文件是我目前拥有的 RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^(www\.)?foo\.com [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /foo/index.html [R,L] RewriteC

我有两个不同的域,我想将它们指向服务器上的不同文件夹

这个.htaccess文件是我目前拥有的

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?foo\.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /foo/index.html [R,L]

RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /bar/index.html [R,L]
(请注意,[R]选项仅在那里,以便我可以看到测试时发生了什么(没有发生)

如果你去www.foo.com/asdfwww.bar.com/something 但是,出于某种原因,简单地转到www.foo.comwww.bar.com(带或不带www.subdomain)不会触发这些规则


我做错了什么?

这是因为
重写cond%{REQUEST\u FILENAME}-f
主页(index.php或index.html)失败,因为将找到其中任何一个文件。您可以这样设置规则:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?foo\.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /foo/index.html [L]

RewriteCond %{HTTP_HOST} ^(www\.)?foo\.com [NC]
RewriteRule ^index\. /foo/index.html [L]

RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /bar/index.html [L]

RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com [NC]
RewriteRule ^index\. /bar/index.html [L]