2013-08-29 31 views
0

我希望我已經正確地標題這個問題,我試着解釋它是什麼,我們正試圖實現。單一網站的多個版本的單一代碼基地

我們使用文件和目錄模板構建了一個白色標籤Web應用程序。

我們將這個網站授權給那些可以通過CSS在系統版本上標識和定製顏色樣式的客戶。該網站對每個客戶都以完全相同的方式工作。

每個站點/客戶都有自己的數據庫和php配置文件來確定他們的數據庫名稱和小部分信息(地址,聯繫信息等)。

我們已經有大約12位客戶,但我們發現的問題是,我們必須爲每個客戶複製我們所有的文件和目錄 - 使得在進行小型更新時非常困難,我們必須上傳新網站12次。

要在作品中添加另一個扳手,我們爲每個客戶設置自己的URL並使用htaccess將他們指向我們的目錄。

那麼...有沒有辦法爲所有12位用戶使用一個版本的web應用程序文件和目錄,但是如果他們去www.customer1.com我們可以加載一個configuration.php文件和徽標/ css和www.customer2.com等一樣?

它們都使用相同的模板文件,但URL決定了要加載的配置文件。

對不起,如果這是不明確的,如果是我會嘗試和進一步闡述。

謝謝

+0

是的只是檢查是否有一個URL的配置文件,並加載它,如果還有其他使用默認的一個 – Anigel

+1

解析$ _SERVER ['HTTP_HOST'];提取子域或客戶域,然後選擇適當的配置,樣式表,子目錄等 –

回答

0

有幾種可能的解決方案。

解決方案一:

我會用所有的網站使用一個共享目錄,只留下一個配置文件中的所有用戶文件夾。

然後,新定製的部署腳本將爲除定製文件之外的所有內容創建符號鏈接。您可能需要重構一些代碼才能執行此操作,而無需在部署腳本中編寫數百個符號鏈接。

優點:

  • 每個用戶都有一個單獨的目錄,只有那些自定義用戶每個客戶
  • 自定義很簡單,因爲你可以打破的符號鏈接的碼位,複製代碼,並修改它

缺點:

  • 分散定製檢查

第二溶液:

路由所有用戶使用相同的代碼,並且根據URL(例如customer1.mysite.com),設置一些配置變量。使您的網站基於該變量加載整個用戶配置。

優點:

  • 幾乎沒有改變現有的代碼庫(取決於代碼是如何寫的)
  • 爲所有客戶定製的檢查集中的地方。

缺點:

  • 用戶的自定義代碼將很難寫/維持

參考文獻:

+0

感謝弗拉德,我打算用幾個選項做一些測試,並且會回來指出我們選擇的答案 – Paul

0

還有就是如何讓URL一個很好的例子,在PHP請求本網站上的用戶:http://www.phpro.org/examples/Get-Domain-Name-From-URL.html

<?php 

function getDomain($url) 
{ 
    if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED) === FALSE) 
    { 
     return false; 
    } 
    /*** get the url parts ***/ 
    $parts = parse_url($url); 
    /*** return the host domain ***/ 
    return $parts['scheme'].'://'.$parts['host']; 
} 
?> 

然後,您可以檢查,看看他們選擇的站點是這樣的:

<?php 
    //this next line from: http://stackoverflow.com/questions/6768793/php-get-the-full-url 
    $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 

    if (getDomain($url) = "customer1.com"){ 
     //Load config for customer 1 
     //Perhaps also store this in some flag for loading custom css later. 
    } 
    if (getDomain($url) = "customer2.com"){ 
     //Load config for customer 2 
     //etc... 
    } 

?> 

可能有更好的方法,因爲這需要您爲每個客戶添加另一個if語句。

+0

謝謝丹傑布,我我會用幾個選項做一些測試,並會回來顯示我們選擇的答案 – Paul