2014-03-27 32 views
0

我有兩個不同的域,我想指向我的服務器上的單獨文件夾。.htaccess重寫不在主URL上觸發

此.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。子域名)由於某種原因不會觸發這些規則。

我在做什麼錯?

回答

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]