2009-11-13 74 views
3

我已經開發了超過50個網站,所有使用完全相同的文件,而不是CSS和IMAGES,我目前每次創建一個新網站時複製文件並上傳不同的CSS和圖像。多個網站與共同文件

將所有常見文件簡單分成1個主要位置的最佳做法是什麼?

這是我對每個網站目前的結構:

/home/ftpuser/public_html/commonfile1.php 
/home/ftpuser/public_html/commonfile2.php 
..... 
/home/ftpuser/public_html/commonfileN.php 
/home/ftpuser/public_html/commonfolder1/ 
/home/ftpuser/public_html/commonfolder2/ 
..... 
/home/ftpuser/public_html/commonfolderN/ 
/home/ftpuser/public_html/css/ 
/home/ftpuser/public_html/css/mycssfiles.css 
/home/ftpuser/public_html/images/ 
/home/ftpuser/public_html/images/myimages.jpg 

我怎麼會去讓所有位於1處爲每個站點,同時仍然能夠擁有定製的CSS和圖像的共同文件。

我使用了Apache,PHP,Centos的

+2

您是否將這些網站部署到其他服務器/位置,還是全部託管在您開發它們的同一臺服務器上? – 2009-11-13 16:27:31

+0

他們都在同一臺服務器上 – Lizard 2009-11-13 16:30:18

+0

他們都在同一個域名? – 2009-11-13 16:31:56

回答

4

我會讓你的50個虛擬主機都使用相同的DocumentRoot。這樣你保證所有的網站都會使用相同的公共文件。

要選取不同的css和圖像目錄,請使用Alias指令指向每個VirtualHost的顯式目錄。

+0

是的虛擬主機很好地解決了這個問題。 – Xailor 2009-11-13 16:48:56

+0

我已經這樣做了.. 的DocumentRoot的/ home/corefiles /的public_html AliasMatch /testme/(.*)/家庭/名爲ftpuser /的public_html /測試/ $ 1 問題是,名爲ftpuser沒有權限讀取corefiles文件。不知道如何解決這個問題。 (testme/file.css工作得很好!) – Lizard 2009-11-13 16:54:57

+0

我也對此感興趣,你實際得到的錯誤是什麼? – robjmills 2009-11-13 20:22:05

0

如果這些網站都在同一臺服務器上,你可以只包含的文件在你的PHP包括。

那麼你可以將它們包括,就好像它們在你當前的php文件所在的目錄中一樣。

1

最明顯的解決方案,假設所有不同的網站在同一服務器/文件系統託管,將是一個類似於:

+- common files (outside web root) 
| 
+- httpdocs (web root) 
    | 
    +--+- website 1 specific files 
    |  | 
    |  +- images (etc) 
    | 
    +--+- website 2 specific files 
      | 
      +- images (etc) 

通過上述圖中,所有你需要做的是包括來自共享位置的相關文件,以及使用特定於站點的文件(無論存儲在web-root的內部還是外部)爲站點特定的目的覆蓋/否決。

如果您的網站都託管在不同的服務器上,那麼它會變得更復雜一些,因爲任何常見文件都必須託管在web根目錄的某處(可通過http訪問)。這並不理想,儘管沒有什麼能夠阻止它的工作,但就帶寬使用和跨站點安全問題而言,這可能是有問題的。

對於虛擬主機,您處於兩種選擇之間的中間地帶;只要他們都可以訪問相同的文檔根目錄,您仍然可以使用這些包含(在這些答案中的其他地方爲suggested by dland)。

+0

如上所述,這聽起來像你需要一個共同的lib目錄共享文件。然後,您可以修補所有站點中的通用代碼中的任何錯誤,而無需在其他50個位置複製該錯誤。 – 2009-11-13 16:47:33

0

我想你可以從主文件夾中包含所需的文件,你必須使它可以從所有站點訪問(使用軟鏈接會導致服務器認爲他們在每個站點的目錄中)

使用軟鏈接可以使路徑問題更容易,並且不需要使用httpdocs目錄之外的路徑。

0

如果他們是在同一臺服務器上,你可以只符號鏈接文件:

ln -s /home/ftpuser/public_html/commonfile1.php /home/ftpuser/public_html/commonfile2.php 

這一個共享的主機設置,其中不同的用戶(業主文件)參與分解。