2010-08-15 42 views
0

我有一個基於PHP的Youtube克隆系統安裝在我們的服務器上。在基於PHP的系統中域(國家)實現橫幅

在幾個國家使用相同的系統。比方說,我有3個域名都指向同一個系統:
www.site.hr
www.site.ba
www.site.rs

他們都重定向到一個名爲一些網站www.site.tv

這3個國家的語言非常相似,因此每個國家都有相同的系統是有意義的,但在系統內部顯示與該特定國家相關的橫幅將是非常好的。

這樣做的最好方法是什麼,甚至有可能嗎? 我的想法是:
1)查找每個訪問者IP並檢查來自哪個國家或
2)創建3個子站點hr.site.tv,ba.site.tv和rs.site.tv,它們是所有
單獨的系統,但共享相同的數據庫...

我知道第一個想法是有缺陷的,第二個是合理的。 你有什麼更好的主意嗎?

回答

1

如果你並不需要一個強大的系統,但只能增加設置橫幅一些(大多數)用戶的可能性,你可能會使用簡單的解決方案:

www.site.hr redirects to www.site.tv?lang=hr 
www.site.ba redirects to www.site.tv?lang=ba 
www.site.rs redirects to www.site.tv?lang=rs 

那麼郎參數存儲在$_SESSION並在人們持續訪問內部頁面時使用它來顯示相關的橫幅。

如果該參數不存在於會話中(例如機器人),您需要具有默認行爲。

您將獲得很少重複內容和對現有代碼(我想)幾乎沒有變化的好處。

+0

這是一個非常簡單但優雅的解決方案,適用於我的問題。 我有一個過於簡單的問題。 謝謝 – ttkalec 2010-08-15 13:40:25

1

IP地址查找和GeoIP不可靠。例如,嗅探$ _SERVER ['HTTP_ACCEPT_LANGUAGE']將不會有太大的幫助,因爲它們可能會返回相同的語言,或者根本不會有用戶喜歡英語的情況。

如果這些是您的內部橫幅,建議使用子域或同一域內的不同URL路徑。第三方廣告提供商可能有自己的市場定位算法。

0

你的想法1)可能適用於大多數情況,但有時候用戶會根據他們如何連接到互聯網而得到錯誤的結果,並給你提供搜索引擎問題,你可能想要索引所有這三個網站。

2)由於'所有單獨的系統'部分是有問題的。保持三個獨立的代碼庫做基本相同的事情是浪費精力,如果它必須適合所有的數據庫結構,那麼修改數據庫結構將會非常棘手。

一個更好的選擇是隻有一個系統,但將其連接到所有三個域,並在其中放置一些邏輯以顯示每個國家的相應橫幅。您可以配置您的Web服務器,將這三個域名視爲別名,並將所有這些域名的請求發送到同一個PHP應用程序。在PHP中,您可以獲得客戶請求的網站名稱$_SERVER['SERVER_NAME']。您可能正在使用框架或PHP庫,它提供了一種不同的方式在您的網站上擁有域名特定的內容。

可能的客戶端可能會發送一個您不期待的主機名,因此請確保您有一個允許的主機名白名單,並且如果服務器得到了它無法識別的請求,它會拒絕該請求。