2015-01-15 14 views
0

我有2個域名,foo.combar.com.htaccess文件在bar.com問到bar.com所有請求根重定向到foo.com除了目錄索引文件的初始搜索,它得到指向foo.com的特定php文件(functions.php)。mod_rewrite的 - 檢查現有的文件和目錄

這意味着,對於bar.comwww.bar.com的請求將看到foo.com/functions.php訪問和對圖像中的各種請求,樣式表等繼續訪問的foo.com/images/image.jpg而非foo.com/function.phpimages/image.jpg重寫的相對路徑。 這一切工作正常

現在,問題所在。

我想在bar.com上包含一個不重定向的子目錄。如在中,對bar.com/newdirectory/的請求進入該目錄,並且所有相關文件請求都像正常一樣行爲,同時保持對以root身份訪問bar.com的任何人的原始規則(如上所述)。目前我得到一個404,如果我嘗試訪問新的子目錄。

在我原來的.htaccess文件中,我包含了一個用於檢查文件不存在的鬆散代碼。我嘗試添加的標誌!-d檢查,如果不存在第一目錄,但這導致了請求bar.com直去foo.com而非foo.com/functions.php

當前.htaccess文件:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

# Check the request isn't an existing file 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^$ http://www.foo.com/functions.php [P] 
RewriteCond %{REQUEST_FILENAME} !^$ [NC] 
RewriteRule ^(.*) http://www.foo.com/$1 [P] 

回答

2

您可以添加RewriteBase /

RewriteRule ^newdirectory/? - [L] 

和其他人。不需要測試文件,因爲您只重定向了空的URI。
您可以使用:

RewriteRule ^$ http://www.foo.com/functions.php [P] 
RewriteRule ^(.+) http://www.foo.com/$1 [P] 

所有.htaccess其中給出:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteRule ^newdirectory/? - [L] 

RewriteRule ^$ http://www.foo.com/functions.php [P] 
RewriteRule ^(.+) http://www.foo.com/$1 [P] 
+0

這確實出現了工作,感謝Croises。我想知道是否有解決方案可以用於未來的新子目錄?目前,我可以像這樣手動添加豁免。 – biscuitstack

+2

你可以用'RewriteRule ^(newdirectory | otherdirectory | other | other)/? - [L]' – Croises

+0

或者在'RewriteRule^newdirectory \ d * /?後添加一個數字並且使用相同的名字。 - [L]'爲newdirectory,newdirectory1,newdirectory2,3,4 ... – Croises