2010-01-17 62 views
0

我使用多站點託管我的客戶站點。尋求良好的做法建議:在Drupal多站點

在開發階段,我使用子域來託管中轉站點,例如, client1.mydomain.com。
而這裏的它是如何看網站文件夾下:

/sites/client1.mydomain.com 

當網站完成,並準備去住,我創造了另一個文件夾中的實際域,例如client1.com。 因此:

/sites/client1.com 

接下來,我創建了下client1.com符號鏈接的文件和文件的settings.php指向子域

/sites/client1.com/settings.php --> /sites/client1.mydomain.com/settings.php 

/sites/client1.com/files --> /sites/client1.mydomain.com/files 

最後,爲了防止谷歌索引從兩個子域和實際域,我在.htaccess中創建了規則,將client1.mydomain.com重寫爲client1.com,因此,如果任何人嘗試訪問子域,他將被重定向到實際域。

這上面的安排工作得很好。但我總覺得有一種更簡單的方式來達到上述目的。請隨時分享您的意見,所有建議非常感謝。

+0

我認爲這是正常的方式。 – Nikit 2010-01-17 02:10:00

+0

我很好奇。爲什麼不簡單地將整個client1.mydomain.com移動到client1.com?那麼也不需要URL重寫。 – abhaga 2010-01-18 06:22:51

+0

@abhaga我在開始時就這樣做了,直到遇到上傳的圖像路徑問題,特別是使用Imagecache處理的圖像時,完整路徑值存儲在數據庫中,如果我將所有內容都移動到client1.com,圖像將停止顯示出來,因爲它們仍然是從前面的路徑「調用」,即client1.mydomain.com ... – 2010-01-18 10:21:37

回答

0

因爲它似乎要重用文件/目錄的settings.php從您的開發領域,我建議使用默認/目錄+符號鏈接來實現自己的目標。

即,在開發過程中

sites/default/settings.php 
sites/default/files/ 
sites/client1.domain.com -> sites/default (symbolic link) 

一旦你準備好切換到自己的域名:

sites/client1.com -> sites/default 

然後,您可以從您的虛擬主機刪除client1.domain.com(或繼續你的重寫,等等......)。

它將完成與您的方法相同的操作,但是如果您在以後的日期將其他域添加爲別名(例如),則會爲所有請求默認添加「保護」。

+0

啊......我明白你的意思了。它看起來像是一個用於登臺單一站點環境的好方案。但對於多場所,我猜這不會工作。感謝您的回答,但請欣賞它。 – 2010-01-17 02:05:33

0

如果您只是在站點之間共享核心文件和模塊文件,則可以使用不同的符號鏈接佈局。

在我的設置我所有的共享文件在一個共同的,非Web訪問的目錄:

/var/www/drupal 
/var/www/drupal/sites/all/modules 

那麼每個部署,常見的文件和文件夾的符號鏈接到這些文件。

/var/www/client1/public_html/index.php -> /var/www/drupal/index.php 
/var/www/client1/public_html/includes -> /var/www/drupal/includes 
... 
/var/www/client1/public_html/sites/all -> /var/www/drupal/sites/all 

然後您可以放置​​網站的設置。PHP和默認站點目錄

/var/www/client1/public_html/sites/default 

這種佈局也爲您提供了靈活性,以覆蓋任何必要的共同文件,如任何的.htaccess模塊​​或主題只有該網站。

要從分段遷移到生產,您只需修改從登臺到生產域名的虛擬主機配置。

0

如果你不喜歡一噸的符號鏈接,另一種選擇是使用別名多站點支持補丁: http://drupal.org/node/231298#comment-1420180

這將允許你在配置中指定,對於client1.domain.com任何請求實際上應該使用/sites/client1.com/而不是/sites/client1.domain.com/。

然後,當您轉移到生產時,您可以刪除配置設置(儘管如果不這樣做不會損害任何東西)。

此功能是Drupal 7的一部分,但是不會將新功能添加到Drupal 6.更多好消息是,您甚至不需要在D7中將它用於文件路徑,因爲不是存儲文件在數據庫中的完整路徑,他們使用如public://private://這樣的模式,然後Drupal將其映射到正確的文件系統路徑,從而允許多種存儲類型/位置具有更好的可移植性。