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

时间:2014-03-27 11:40:13

标签: .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]

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/asdf www.bar.com/something ,它的工作正常 但是,只需访问 www.foo.com www.bar.com (有或没有www。子域名)由于某种原因不会触发这些规则

我做错了什么?

1 个答案:

答案 0 :(得分:1)

由于RewriteCond %{REQUEST_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]