2012-08-22 89 views
2

我開始一個項目,需要從一個服務器/ IP託管8個網站,使用相同的(自定義)框架。htaccess路由多個域

我需要做的是爲每個網站使用單獨的應用程序文件夾。這部分很簡單,只需複製文件夾結構即可。我遇到的部分是.htaccess

每個應用程序文件夾設置像這樣:現在

- application 
    -controller 
    -view 
    -www 
    -css 
    -js 
    -img 

,需要採取什麼措施是,對文件的請求,需要建立得到他們,那就是任何請求不是一個文件去個別應用程序的引導文件...這一部分很容易,因爲我在webroot中有一個.htaccess文件來處理一旦請求到達那裏。

我需要的是,在主要的根文件夾,使用.htaccess決定去根據用戶訪問的域名是什麼應用程序。

當只有一個應用程序文件夾去,我的htaccess的重定向的部分看起來像這樣:

RewriteEngine on 

RewriteCond  %{DOCUMENT_ROOT}/application/www%{REQUEST_URI} -d 
RewriteRule  ^(.*[^/])$ /$1/     [R=301,L] 

RewriteRule ^$ application/www/  [L] 
RewriteRule (.*) application/www/$1  [L] 

基本上,我需要複製該使用相同的框架多個域。

應用程序文件夾的命名方式與域名相同,如果有任何幫助的話!

回答

1

試試這個:

RewriteEngine On 

RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -d 
RewriteRule ^(.*[^/])$ /$/ [R=301,L] 

RewriteRule ^$ application/www/ [L] 

RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -d [OR] 
RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -f 
RewriteRule ^(.*)$ application/www/$1 [L] 

的2個條件的最後一條規則之上確保所請求的資源在應用程序的WWW文件夾確實存在,否則404消息將暴露的文件夾結構。

您可能需要一些規則(以上這些),以規範化的主機名是這樣的:

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

迫使主機名開始與WWW

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

刪除WWW從主機名。

+0

我喜歡快速,到點答案,你救了我頭痛! 另外,如果我可以+2你的文章,我會因爲你已經刪除了第二個'.htaccess'文件的實際需要。最後一條規則中的'兩個條件'是每個應用程序的單個'.htaccess'文件中的內容! –