2011-10-05 69 views
0

我的目標是模擬在.htaccess中使用mod_rewrite的虛擬主機,以便http://dog.animal.com內部映射到WEBROOT/public_html/dog /,cat.animal.com內部映射到WEBROOT/public_html/cat /,其中狗和貓在系統上建立用戶名。.htaccess(mod_rewrite)遞歸處理%{HTTP_HOST}

我(在WEBROOT的.htaccess):

RewriteCond %{HTTP_HOST}     ^[^.]+\.animal\.com$ 
RewriteRule ^(.+)      %{HTTP_HOST}$1   [C] 
RewriteRule ^([^.]+)\.animal\.com(.*) /public_html/$1$2 

但在請求dog.animal.com我收到以下循環

紫禁城。您沒有權限訪問 /的public_html/dogpublic_html/dogpublic_html/dogpublic_html/dogpublic_html/..... 等等等等

顯然我忽視的東西愚蠢明顯。我會很感激任何指針!

(我應該說,在上面的例子中,有在格蘭區域文件A記錄兩個子域)

回答

0

在你的第二個重寫規則,使用/的public_html是指根。嘗試刪除開始/或把完整的路徑與WEBROOT

+0

我試着修改替換字符串,但總是得到重複。不知何故,我的RewriteCond再次匹配,因此重複的文件路徑。我需要弄清楚如何在第一次迭代後停止。刪除'root'不會影響到這一點。謝謝,不過。 – Centzon

+0

也許是黑客,但嘗試在最後一次重寫結束時放一個[L]以停止重寫 – crazyjul

+0

「L」標誌會引發500錯誤。 – Centzon